1、程序中連接數據庫的步驟
public static void main(String[] args) { String DriverName="com.mysql.jdbc.Driver";//com.microsoft.sqlserver.jdbc.SQLServerDriver/org.postgresql.Driver String userName="smith.shi"; String passWord="123456"; String URL = "jdbc:mysql://211.152.47.84:3306/h_news?useUnicode=true&characterEncoding=UTF-8";
try {
//Class.forName(DriverName);
Connection dbConn=DriverManager.getConnection(URL, userName, passWord);
System.out.println("連接數據庫成功");
try {
Statement statement = dbConn.createStatement();
// 要執行的SQL語句
String sql = "select * from t_datatable_fulllink";
// 結果集
ResultSet rs = statement.executeQuery(sql);
while(rs.next()) {
// 選擇status_id這列數據
String status_id = rs.getString("status_id");
// 輸出結果
System.out.println(rs.getString("request_date") + "\t" + status_id);
}
rs.close(); dbConn.close();//關閉連接
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("連接數據庫失敗");
// TODO: handle exception
}
}
控制台輸出如下:
正常來說連接數據庫都是就是上面的那部分代碼,但是我發現如果不寫Class.forName(DriverName)這一行代碼,還是可以連接到對應的數據庫。后來查閱了一些資料發現——jdbc4.0 是不用顯式的去加載驅動,如果驅動包符合 SPI 模式就會自動加載 就是說程序會自動去項目中查找是否有驅動。也就是說我們只要在項目中有連接數據庫的相關jar包,這行代碼不用寫,他會主動的去加載。上面有三種數據庫,MySQL跟sqlserver都是常用的數據庫,這里主要說下最后一種postgresql,因為我們沒有下載這個驅動的相關jar包,故這個jar包需要我們自己手動添加,下載jar包的網址是:https://jdbc.postgresql.org/download.html。
導入jar包方法(eclipse):右擊項目,找到Build path-->configure build path,然后依次點擊藍色、綠色部分。找到我們需要添加的本地jar包地址,最終效果就是如紅色部分所示,然后保存關閉即可。
如果說我們在連接數據庫的時候報No suitable driver found for jdbc...這樣的錯,那么就表示這個項目沒有相關連接數據庫的jar包,此時我們需要檢查並補全我們所需要的jar包。
補充一下:我們在連接數據庫的時候所用的URL也就是我們所說的數據源,但是需要注意的是MySQL的數據源格式跟sqlserver的數據源格式是不一樣的
MySQL:datasource.url=jdbc:mysql://連接的IP地址:端口號/數據庫名?useUnicode=true&characterEncoding=utf-8&useSSL=false
舉例:datasource.url=jdbc:mysql://211.152.47.84:3306/h_news?useUnicode=true&characterEncoding=UTF-8
Sqlserver:datasource.url=jdbc:sqlserver://連接的IP地址:端口號;DatabaseName=數據庫名
舉例:datasource.url=jdbc:sqlserver://211.152.47.69:1433;DatabaseName=DC_TEST
Postgresql:datasource.url=jdbc:postgresql://連接的IP地址:端口號/數據庫名
這里可能會有人有疑問了,為什么MySQL中我的數據源格式不太對勁,后面少個&useSSL=false,這里涉及到SSL證書的問題,有時候我們連接數據庫的時候加上這個可能會導致程序中證書部分報錯,所以我們可以連接的時候可以不用加這個。說到證書連接問題,這里又想到一個事情,之前有項目涉及到網站以及網站證書的東西,運行后錯誤信息大致如下:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。一開始以為是本地環境的問題,后來查閱了很多資料才發現是所訪問網站在本地的證書配置問題。
博客參考:https://blog.csdn.net/gabriel576282253/article/details/81531746(這個很好用,解決了我的問題)