鏈接數據庫須要通過如下幾個步驟: java
一、 根據驅動程序名稱driverName,利用Java反射機制,加載數據庫驅動程序; mysql
二、 根據鏈接字符串connectionURL,從驅動管理器中獲取數據庫鏈接對象; sql
三、 利用數據庫鏈接對象進行數據庫操做。 數據庫
代碼以下: 服務器
Class providerClass = Class.forName(driverName); Connection = DriverManager.getConnection(connectionURL, username,password); return connection ;
不一樣數據庫的驅動程序和鏈接字符串: 網絡
MySQL: oracle
驅動程序名稱 app |
com.mysql.jdbc.Driver ide |
鏈接字符串 sqlserver |
jdbc:mysql://<IP>/<DB>?useUnicode=true&characterEncoding=GBK |
SQL Server:
驅動程序名稱 |
com.microsoft.jdbc.sqlserver.SQLServerDriver |
鏈接字符串 |
jdbc:microsoft:sqlserver://<IP>:1433;DatabaseName=<DB> |
Oracle:
驅動程序名稱 |
oracle.jdbc.driver.OracleDriver |
鏈接字符串 |
jdbc:oracle:thin:@<IP>:1521:<DB> |
DB2:DB2的JSP鏈接方式有APP驅動、NET驅動和JCC驅動三種方式。
APP方式:
驅動程序名稱 |
COM.ibm.db2.jdbc.app.DB2Driver |
鏈接字符串 |
jdbc:db2:<DB> |
NET方式:
驅動程序名稱 |
COM.ibm.db2.jdbc.net.DB2Driver |
鏈接字符串 |
jdbc:db2://<IP>:6789/<DB> |
JCC方式:
驅動程序名稱 |
COM.ibm.db2.jdbc.jcc.DB2Driver |
鏈接字符串 |
jdbc:db2://<IP>:50000/<DB> |
鏈接數據庫常見問題:
一、 系統拋出異常java.lang.ClassNotFoundException。例如:
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver |
這說明試圖初始化驅動程序的時候出錯,在Class.forName()中,Java虛擬機沒法在類路徑中找到指定驅動名稱的驅動類。須要把包含驅動類的 mysql-connector-java-x.xx.xx-bin.jar 文件放置在運行的類路徑WEB-INF/lib下。
二、 系統拋出異常java.net.SocketException:Connection Refused,鏈接被拒絕。
1) 若是數據庫服務器未開啓或沒法創建鏈接,則拋出異常以下:
java.net.SocketException:java.net.ConnectionException:Connection refused:connect |
首先肯定鏈接字符串中的URL配置中IP是否正確,端口是否正確,同時須要確保服務器已經啓動接受服務請求。
2) 若是肯定服務器已經啓動,那麼能夠查看配置,看數據庫對外服務的端口是否爲默認端口,抑或有所改動。
3) 若是服務器已經啓動,並且採用了默認端口,那麼須要查證服務器上是否安裝了網絡防火牆,阻斷了數據庫鏈接請求。
三、 若是調用DriverManager.getConnection(connectionURL,username,password)中username和password不正確,那麼驅動程序將拋出以下異常:
java.sql.SQLException:Access denied for user ‘root’@’localhost’(using password:YES) |
須要修改用戶名和口令後從新進行鏈接。
四、 因爲數據庫驅動和數據庫服務器的版本不匹配,致使了鏈接失敗。