詳解Java使用JDBC連接MySQL數(shù)據(jù)庫
一:什么是數(shù)據(jù)庫,為什么要有數(shù)據(jù)庫?
數(shù)據(jù),數(shù)據(jù)庫,數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)是與數(shù)據(jù)庫技術(shù)密切相關(guān)的四個基本概念。
數(shù)據(jù)庫相信大家都耳熟能詳了,其實數(shù)據(jù)庫顧名思義就是存放數(shù)據(jù)的倉庫,只不過這個倉庫是在計算機存儲設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的~
可能有朋友就要打斷我施法了,停停停,我們Java程序猿在IDEA里面和控制臺你儂我儂,沒有對象new個對象存儲在內(nèi)存JVM的堆上就行了,學(xué)數(shù)據(jù)庫干啥啊?
這時候我們就需要了解到:內(nèi)存(Memory)也被稱為內(nèi)存儲器,其作用是用于暫時存放CPU中的運算數(shù)據(jù),以及與硬盤等外部存儲器交換的數(shù)據(jù)。
以疫情期間為例,把人隔離觀察住的酒店,就好比是內(nèi)存,家喻戶曉的JVM就是放在內(nèi)存上的~~~ 酒店是給人住的,他的空間是寶貴的,然而每個人每天生活必需品,衣食住行等等,隔離一天兩天可能酒店還放得下,但是隔離十天半個月,一年半載呢?酒店是住人的,不是放東西的~~~酒店寸土寸金每個地方都很寶貴,拿酒店(內(nèi)存)來放行李和必需品等(海量數(shù)據(jù)~),如果酒店還是西安的W酒店,這豈不是很奢侈?~~~你拿來存放自己和跟班大批行李~老哥,還缺行李不?(doge),想要存放大批東西(海量數(shù)據(jù)),我直接把十四運的主場館(外存上的數(shù)據(jù)庫)(69.6畝)給你放行李(海量數(shù)據(jù))~!
這下諸位應(yīng)該都了然為什么我們需要搞數(shù)據(jù)庫了吧?
二:如何使用Java連接數(shù)據(jù)庫~
1)原生方法
1.1)加載JDBC 驅(qū)動:
Class.forName(driver);// mysql 數(shù)據(jù)庫:“com.mysql.jdbc.Driver”
1.2)建立數(shù)據(jù)庫連接:
Connection conn=DriverManager.getConnection(url,userName,password);
1.3)創(chuàng)建 statement,用來執(zhí)行SQL 語句:
Statement statement =conn.createStatement();
1.4)執(zhí)行 SQL 語句:
preparedStatement.Execute 這個。執(zhí)行所準備的語句,并且返回結(jié)果集合 ResultSet
preparedStatement 事先準備好的聲明
Execute the prepared statement.就是執(zhí)行準備好的語句!
ResultSet rs =statement.executeQuery(sql);
1.5)關(guān)閉記錄集,關(guān)閉聲明,關(guān)閉連接對象
1.6)連起來
在以反射的方式注冊驅(qū)動從而獲取數(shù)據(jù)庫的連接的方法,詳情可以參考我以前的博客,因為本文側(cè)重于講解DataSource連接數(shù)據(jù)庫的方法!所以在此不作贅述~
1.7)原生方法的不足:
每次使用都要創(chuàng)建連接,使用完畢后還必須關(guān)閉連接,操作繁瑣,易出錯;
連接數(shù)據(jù)庫資源不便統(tǒng)一管理;
三:IDEA中配置jar包
工欲善其事必先利其器,在前期的學(xué)習過程中,我們使用JDBC連接MySQL的時候應(yīng)該手動配置Jar包
移步之前的帖子——>配置Java包流程及Jar包下載
四:url必知必會
我們在瀏覽器的地址欄里輸入的網(wǎng)站地址叫做URL (Uniform Resource Locator,統(tǒng)一資源定位符)。.就像每家每戶都有一個門牌地址一樣,每個網(wǎng)頁也都有一個Internet地址。
在使用連接數(shù)據(jù)庫的時候需要先知道數(shù)據(jù)庫的
連接信息~
列位您可記住嘞 127.0.0.1 這個地址:就是當前自己電腦的IP地址
而我們的IP地址 和 端口如何理解
IP地址就相當于我們點外賣訂單所填的地址,端口號就是外賣訂單所寫的收件人!~具體交給誰吃!~
而且這個URL沒必要強行記
URL
private static final String URL = "jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true";
jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true
放在好找的地方(如gitee碼云倉庫)等,需要的時候復(fù)制粘貼一改就行了!~
五:datasource獲取連接
package model; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; // DBUtil 本質(zhì)上是一個管理了單例的 DataSource 的類 public class DBUtil { private static final String URL = "jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true"; // private static final String URL = "jdbc:mysql://47.98.116.42:3306/java16_order_system?characterEncoding=utf8&useSSL=true"; private static final String USERNAME = "root"; private static final String PASSWORD = "rota"; private static volatile DataSource dataSource = null; public static DataSource getDataSource() { if (dataSource == null) { synchronized (DBUtil.class) { if (dataSource == null) { dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL(URL); ((MysqlDataSource)dataSource).setUser(USERNAME); ((MysqlDataSource)dataSource).setPassword(PASSWORD); } } } return dataSource; } // 數(shù)據(jù)庫連接失敗是很常見的問題. 如果失敗, 后續(xù)的操作肯定也是失敗的. // 如果發(fā)現(xiàn) Connect 為 null, 就說明數(shù)據(jù)庫連接失敗, 就需要查看錯誤信息(Tomcat 的日志) // 常見的問題就是, url, username, password 等信息寫錯了, 或者數(shù)據(jù)庫沒有啟動. public static Connection getConnection() { try { return getDataSource().getConnection(); } catch (SQLException e) { e.printStackTrace(); } System.out.println("數(shù)據(jù)庫連接失敗, 請檢查數(shù)據(jù)庫是否啟動正確, url 是否正確"); return null; } public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet) { try { if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
需要查看了解上文提到的通過注冊驅(qū)動獲取連接,請移步之前博客:注冊驅(qū)動獲取連接
到此這篇關(guān)于詳解Java使用JDBC連接MySQL數(shù)據(jù)庫的文章就介紹到這了。希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中實現(xiàn)訂單30分鐘自動取消的三種方案分享
在電商和其他涉及到在線支付的應(yīng)用中,通常需要實現(xiàn)一個功能:如果用戶在生成訂單后的一定時間內(nèi)未完成支付,系統(tǒng)將自動取消該訂單,本文將詳細介紹基于Spring Boot框架實現(xiàn)訂單30分鐘內(nèi)未支付自動取消的幾種方案,并提供實例代碼,需要的朋友可以參考下2023-10-10IntelliJ IDEA(或者JetBrains PyCharm)中彈出"IntelliJ IDEA License
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA(或者JetBrains PyCharm)中彈出"IntelliJ IDEA License Activation"的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10Java讀寫txt文件時防止中文亂碼問題出現(xiàn)的方法介紹
這篇文章主要介紹了Java讀寫txt文件時防止中文亂碼問題出現(xiàn)的方法,同時需要注意系統(tǒng)默認的文本保存編碼的設(shè)置,需要的朋友可以參考下2015-12-12java中BigDecimal的介紹及使用教程BigDecimal格式化及BigDecimal常見問題
BigDecimal是Java在java.math包中提供的線程安全的API類,用來對超過16位有效位的數(shù)進行精確的運算,這篇文章主要介紹了java中BigDecimal的介紹及使用,BigDecimal格式化,BigDecimal常見問題,需要的朋友可以參考下2023-08-08SpringCloud實戰(zhàn)之Zuul網(wǎng)關(guān)服務(wù)
服務(wù)網(wǎng)關(guān)是分布式架構(gòu)中不可缺少的組成部分,是外部網(wǎng)絡(luò)和內(nèi)部服務(wù)之間的屏障。這篇文章主要介紹了SpringCloud實戰(zhàn)之Zuul網(wǎng)關(guān)服務(wù)。一起跟隨小編過來看看吧2018-05-05