1. 程式人生 > >Java-JDBC(1)

Java-JDBC(1)

得到 nbsp 成對 spa ext 概述 三個參數 jvm imp

一,

1.jdbc概述:jdbc是一種用來執行sql語句的java api,可以為多種關系數據庫提供同意訪問,是由一組用Java代碼寫的類和接口組成,是java訪問數據庫的標準規範

2.jdbc原理:Java提供訪問數據庫孤帆稱為jdbc,而生產廠商提供方規範的實現類成為驅動

技術分享圖片

jdbc是接口,驅動是接口的實現,沒有驅動將無法完成數據庫連接,從而不能操作數據庫

3.jdbc開發步驟:

(1),註冊驅動:告知jvm使用的是哪一個數據庫的驅動

(2),獲得鏈接:使用JDBC中的類,完成對MySQL數據庫的連接

(3),獲得語句執行平臺:通過連接對象獲取對SQL語句的執行者對象

(4),執行sql語句:使用執行者對象,向數據庫執行

SQL語句,獲得到數據庫的執行後的結果

(5),處理結果

(6),釋放資源

4.導入驅動jar包

創建lib目錄,用於存放當前項目需要的所有jar包,選擇jar包,右鍵執行build path / Add to Build Path

技術分享圖片

5.註冊驅動:

代碼:Class.forName("com.mysql.jdbc.Driver");

jdbc規範定義驅動接口:java.sql.Driver,mysql驅動包提供了實現類:com.mysql.jdbc.Driver DriverManager工具類,提供註冊驅動的方法registerDriver(),方法的參數是java.sql.Driver,所以可以通過下面的代碼進行註冊:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

但是由於上面的代碼存在:硬編碼,後期不宜與程序擴展維護和驅動被註冊兩次的不足,所以不推薦使用

通常開發使用Class.forName()加載一個使用字符串描述的驅動類,如果使用Class.forName()將類加載到內存,該類的靜態代碼將自動執行,通過查詢com.mysql.jdbc.Driver源碼,我們發現Driver類主動將自己註冊

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!"); } } …… }

6.獲得連接:

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);

獲取連接需要方法 DriverManager.getConnection(url,username,password),三個參數分別表示,url 需要連接數據庫的位置(網址) user用戶名 password 密碼

url比較復雜,下面是mysqlurl

jdbc:mysql://localhost:3306/mydb
JDBC規定url的格式由三部分組成,每個部分中間使用冒號分隔。
   第一部分是jdbc,這是固定的;
   第二部分是數據庫名稱,那麽連接mysql數據庫,第二部分當然是mysql了;
   第三部分是由數據庫廠商規定的,我們需要了解每個數據庫廠商的要求,mysql的第三部分
分別由數據庫服務器的IP地址(localhost)、端口號(
3306),以及DATABASE名稱(mydb)組成。

7.獲得語句執行平臺:

String sql = "某SQL語句";
獲取Statement語句執行平臺:Statement stmt = con.createStatement();

常用方法:

1.int executeUpdate(String sql); --執行insert update delete語句.
2.ResultSet executeQuery(String sql); --執行select語句.
3.boolean execute(String sql); --執行select返回true 執行其他的語句返回false.

8.處理結果集(執行insert,update,delete無需處理)

ResultSet實際上就是一張二維的表格,我們可以調用其boolean next()方法指向某行記錄,當第一次調用next()方法時,便指向第一行記錄的位置,這時就可以使用ResultSet提供的getXXX(int col)方法(與索引從0開始不同個,列從1開始)來獲取指定列的數據:

rs.next();//指向第一行
rs.getInt(1);//獲取第一行第一列的數據

常用方法:

1.Object getObject(int index) / Object getObject(String name) 獲得任意對象
2.String getString(int index) / Object getObject(String name) 獲得字符串
3.int getInt(int index) / Object getObject(String name) 獲得整形
4.double getDouble(int index) / Object getObject(String name) 獲得雙精度浮點型

9.釋放資源:

rs.close();
stmt.close();
con.close();

Java-JDBC(1)