日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

jdbc mysql demo_JDBC_demo:java连接mysql过程

發布時間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc mysql demo_JDBC_demo:java连接mysql过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.任何數據庫驅動程序都提供對java.sql.Driver接口的驅動類,mysql-connector-java-5.1.39-bin.jar中Driver:

packagecom.mysql.jdbc;importjava.sql.DriverManager;importjava.sql.SQLException;public class Driver extendsNonRegisteringDriverimplementsjava.sql.Driver

{publicDriver()throwsSQLException

{

}static{try{

DriverManager.registerDriver(newDriver());

}catch(SQLException E) {throw new RuntimeException("Can't register driver!");

}

}

}

實際上Class.forName("com.mysql.jdbc.Driver")--->DriverManager.registerDriver(new Driver())。java.sql.DriverManager類是JDBC的管理層,負責管理JDBC驅動程序的基本服務。在DriverManager中Driver被包裝為DriverInfo類,存儲在:

private final static CopyOnWriteArrayList registeredDrivers = new CopyOnWriteArrayList<>();

2.Connection con= DriverManager.getConnection(url,"user","pass");遍歷存儲在registeredDrivers中的DriverInfo,調用各自的connect()。

for(DriverInfo aDriver : registeredDrivers) {//If the caller does not have permission to load the driver then//skip it.

if(isDriverAllowed(aDriver.driver, callerCL)) {try{

println(" trying " +aDriver.driver.getClass().getName());

Connection con=aDriver.driver.connect(url, info);if (con != null) {//Success!

println("getConnection returning " +aDriver.driver.getClass().getName());return(con);

}

}catch(SQLException ex) {if (reason == null) {

reason=ex;

}

}

}else{

println(" skipping: " +aDriver.getClass().getName());

}

}

3.com.mysql.jdbc.Driver繼承NonRegisteringDriver,實際的connect在com.mysql.jdbc.NonRegisteringDriver.connect()中實現,方法返回類型為java.sql.Connection。

publicjava.sql.Connection connect(String url, Properties info)throwsSQLException

{if (url == null) {throw SQLError.createSQLException(Messages.getString("NonRegisteringDriver.1"), "08001", null);

}if (StringUtils.startsWithIgnoreCase(url, "jdbc:mysql:loadbalance://"))returnconnectLoadBalanced(url, info);if (StringUtils.startsWithIgnoreCase(url, "jdbc:mysql:replication://")) {returnconnectReplicationConnection(url, info);

}

Properties props= null;if ((props = parseURL(url, info)) == null) {return null;

}if (!"1".equals(props.getProperty("NUM_HOSTS"))) {returnconnectFailover(url, info);

}try{returnConnectionImpl.getInstance(host(props), port(props), props, database(props), url);

}catch(SQLException sqlEx)

{throwsqlEx;

}catch(Exception ex) {

SQLException sqlEx= SQLError.createSQLException(Messages.getString("NonRegisteringDriver.17") + ex.toString() + Messages.getString("NonRegisteringDriver.18"), "08001", null);

sqlEx.initCause(ex);throwsqlEx;

}

}

4.那么mysql-connector-java-5.1.39-bin.jar中具體是怎么執行sql的,怎么學習,有哪些書可以看呢???

總結

以上是生活随笔為你收集整理的jdbc mysql demo_JDBC_demo:java连接mysql过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。