Java-JDBC(1)
一,
1.jdbc概述:jdbc是一種用來執行sql語句的java api,可以為多種關系數據庫提供同意訪問,是由一組用Java代碼寫的類和接口組成,是java訪問數據庫的標準規範
2.jdbc原理:Java提供訪問數據庫孤帆稱為jdbc,而生產廠商提供方規範的實現類成為驅動
jdbc是接口,驅動是接口的實現,沒有驅動將無法完成數據庫連接,從而不能操作數據庫
3.jdbc開發步驟:
(1),註冊驅動:告知jvm使用的是哪一個數據庫的驅動
(2),獲得鏈接:使用JDBC中的類,完成對MySQL數據庫的連接
(3),獲得語句執行平臺:通過連接對象獲取對SQL語句的執行者對象
(4),執行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比較復雜,下面是mysql的url:
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)