您好,登錄后才能下訂單哦!
1、什么是JDBC
2、JDBC連接數據庫的三種方式
2.1、第一種實現方式
2.2、第二種實現方式
2.3、第三種實現方式
3、com.mysql.jdbc.Driver的內部實現
使用java代碼(程序)發送sql語句的技術
使用jdbc發送sql前提需要知道:數據庫的IP地址、端口、數據名、用戶名和密碼。
JDBC的URL=協議名+子協議名+數據源名。 a 協議名總是“jdbc”。 b 子協議名由JDBC驅動程序的編寫者決定。 c 數據源名也可能包含用戶與口令等信息;這些信息也可單獨提供。 幾種常見的數據庫連接 -------------------------------oracle------------------ 驅動:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@machine_name:port:dbname 注:machine_name:數據庫所在的機器的名稱; port:端口號,默認是1521 -------------------------------mysql------------------- 驅動:com.mysql.jdbc.Driver URL:jdbc:mysql://machine_name:port/dbname 注:machine_name:數據庫所在的機器的名稱; port:端口號,默認3306 ---------------------------SQL Server------------------ 驅動:com.microsoft.jdbc.sqlserver.SQLServerDriver URL:jdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=<dbname> 注:machine_name:數據庫所在的機器的名稱; port:端口號,默認是1433 --------------------------DB2-------------------------- 驅動:com.ibm.db2.jdbc.app.DB2Driver URL:jdbc:db2://<machine_name><:port>/dbname 注:machine_name:數據庫所在的機器的名稱; port:端口號,默認是5000 -------------------------------------------------------
package com.rk.db.a_jdbc; import java.sql.Driver; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; /** * jdbc連接數據庫 * 第一種方法:通過創建JDBC實現類的驅動類對象建立數據庫連接 * @author RK * */ public class Demo01 { public static void main(String[] args) throws SQLException { // jdbc協議:數據庫子協議:主機:端口/連接的數據庫 // String url = "jdbc:mysql://localhost:3306/testdb"; String username = "root"; String password = "root"; //1.創建驅動程序類對象 Driver driver = new com.mysql.jdbc.Driver(); //設置用戶名和密碼 Properties props = new Properties(); props.setProperty("user", username); props.setProperty("password", password); //2.連接數據庫,返回連接對象 Connection conn = driver.connect(url, props); System.out.println(conn); } }
package com.rk.db.a_jdbc; import java.sql.Driver; import java.sql.DriverManager; import java.sql.Connection; import java.sql.SQLException; /** * jdbc連接數據庫 * 第二種方法:使用驅動管理器類連接數據庫(注冊了兩次,沒必要) * @author RK * */ public class Demo02 { public static void main(String[] args) throws SQLException { String url = "jdbc:mysql://localhost:3306/testdb"; String username = "root"; String password = "root"; Driver driver = new com.mysql.jdbc.Driver(); //1.注冊驅動程序(可以注冊多個驅動程序) DriverManager.registerDriver(driver); //2.連接到具體的數據庫 Connection conn = DriverManager.getConnection(url, username, password); System.out.println(conn); } }
package com.rk.db.a_jdbc; import java.sql.DriverManager; import java.sql.Connection; import java.sql.SQLException; /** * jdbc連接數據庫 * 第三種方法:使用加載驅動程序類 來 注冊驅動程序(推薦使用這種方式連接數據庫) * @author RK * */ public class Demo03 { public static void main(String[] args) throws ClassNotFoundException, SQLException { String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "root"; //通過得到字節碼對象的方式加載靜態代碼塊,從而注冊驅動程序 Class.forName("com.mysql.jdbc.Driver"); //連接到具體的數據庫 Connection conn = DriverManager.getConnection(url,user,password); System.out.println(conn); } }
在這里主要解釋一個問題,也就是在2.3中,并沒有寫代碼用DriverManager對com.mysql.jdbc.Driver的實例進行注冊,原因就在于com.mysql.jdbc.Driver的源碼當中。
在com.mysql.jdbc.Driver類中提供了一個static(靜態)代碼段,如下:
java.sql.DriverManager.registerDriver(new Driver());
完整代碼如下:
------com.mysql.jdbc.Driver類中提供了static代碼段,主動向DriverManager進行注冊 java.sql.DriverManager.registerDriver(new Driver()); package com.mysql.jdbc; import java.sql.SQLException; public class Driver extends NonRegisteringDriver implements java.sql.Driver { // // Register ourselves with the DriverManager // static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } /** * Construct a new driver and register it with DriverManager */ public Driver() throws SQLException { // Required for Class.forName().newInstance() } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。