您好,登錄后才能下訂單哦!
JDBC全稱Java DataBase Connectivity / java數據庫連接,是使用java連接和操作數據庫的最基本驅動工具。
sun公司的javasoft部門開發
最早的JDBC 1.0 隨JDK1.1發布
由一組用Java語言編寫的類和接口組成
用于執行SQL語句的Java API
可以為多種關系數據庫提供統一訪問
使用JDBC驅動的最大的好處就是可以訪問不同的數據庫,因為不同數據庫本身提供不同的驅動以迎合JDBC驅動
流程
導入jar包:驅動jar包!
加載驅動類:Class.forname(類名)
給出url、username、password
使用DriverManager類得到Connection對象
JDBC使用流程
導入jar包:驅動jar包!
加載驅動類:Class.forname(類名)
給出url、username、password
使用DriverManager類得到Connection對象
四大參數:
driverClassName--com.mysql.jdbc.Driver(MySql數據庫)
url--jdbc:mysql://localhost:3306/數據庫名稱(MySql數據庫)
Uesrname
Password
一、加載驅動類(注冊驅動)
Class.forName("com.mysql.jdbc.Driver");
反射機制創建驅動類對象
forName靜態方法:返回與給定字符串名稱的類或接口相關聯的類對象
com.mysql.jdbc.Driver
所有java.sql.driver的實現類都提供了static代碼塊,代碼塊中代碼把自己注冊到DriverManage中
(向 DriverManager 注冊給定驅動程序: 新加載的驅動程序類應該調用 registerDriver 方法讓 DriverManager 知道自己)
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
public Driver() throws SQLException {
// Required for Class.forName().newInstance()
}
}
?
二、獲取連接(通過DBUrl、UserName、PassWord)
Connection conn = DriverManager.getConnection( DB_URL, USER, PASS );
java.sql.DriverManager
用于管理一組 JDBC 驅動程序的基本服務
注意: JDBC 2.0 API中新增的DataSource接口提供了另一種連接到數據源的方法。 使用DataSource對象是連接到數據源的首選方法。
java.sql.Connection
與特定數據庫的連接(會話)。在連接上下文中執行 SQL 語句并返回結果。
三、操作數據庫(CURD)
?
獲取Statement
Statement stmt = con.createStatement();
java.sql .Statement
用于執行靜態SQL語句并返回其生成的結果的對象
在默認情況下,同一時間每個 Statement 對象在只能打開一個 ResultSet 對象
?
??????2、執行execute方法(executeUpdate、executeQuery)
?????????executeUpdate(String?sql)??????????執行給定SQL 語句,該語句可能為?INSERT、UPDATE?或?DELETE?語句,或者不返回任何內容的 SQL 語句(如 ? SQL DDL 語句)
? 方法返回值:
SQL語句執行后影響的數據行數
(1) 對于 SQL 數據操作語言 (DML) 語句,返回行計數
(2) 對于什么都不返回的 SQL 語句,返回 0
? ? ? ? executeQuery(String?sql)
? ? ? ? ? 執行給定的Query?語句語句,該語句返回單個ResultSet 對象(結果集)。
??ResultSet?
????表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。
????需解析返回的結果集
?
? ? ? 3、解析ResultSet對象(一般查詢操作才存在)
ResoultSet對象中的數據存儲格式:二維表格
遍歷結果集方法:
ResultSet 對象具有指向其當前數據行的行光標。
最初,光標被置于第一行之前。
next 方法將光標移動到下一行;因為該方法在 ResultSet 對象沒有下一行時返回 false,所以可以在 while 循環中使用它來迭代結果集
? ? ? ?next()
? ? ? ? ? ? ? 將光標從當前位置向下移一行。
? ? ? ?兩種獲取列值方法:
????????????????????????1、列編號
????????????????????????? ? ?getInt(int?columnIndex)
????????????????????????2、列名
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?getInt(String?columnLabel)
4、關閉連接(Connection、Statement、ResultSet)?????
connection.close();——必須關閉
statement.close();
resultset.close();
節省資源
在不使用數據庫連接池情況下,connection.close()關閉時,statement和resoultset也會隨之自動關閉
但是如果使用了數據庫連接池,connection.close()不會關閉連接,只會歸還給連接池,statement和resoultset對象就會不斷持有
所以最好將ResultSet、Statement、Connection按順序close
????
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。