目錄
文中儲備知識:
1.JDBC
JDBC是Java數據連接技術(Java Database Connection)的簡稱,提供連接各種常用數據庫的能力。
•JDBC驅動由數據庫廠商提供–在個人開發與測試中,可以使用JDBC-ODBC橋連方式–在生產型開發中,推薦使用純Java驅動方式
2.兩種常見的JDBC
(1)JDBC-ODBC橋方式
使用JDBC-ODBC橋方式連接數據庫
–將對JDBC API的調用,轉換爲對另一組數據庫連接API的調用–優點:可以訪問所有ODBC可以訪問的數據庫–缺點:執行效率低、功能不夠強大
(2)純Java方式
使用純Java方式連接數據庫
–由JDBC驅動直接訪問數據庫–優點:100% Java,快又可跨平臺–缺點:訪問不同的數據庫需要下載專用的JDBC驅動
但是,經過實踐操作,大多數同學都覺得純Java方式連接數據庫的成功率更高些,使用JDBC-ODBC橋常連接失敗(不知道是不是操作流程的問題)。
3.DSN
- 數據源的定義:
數據源的英文是DSN(Data Source Name),它是一種用來提高數據庫連接性能的常規手段。
- 數據源的作用:
“數據庫建立好之後,要設定系統的 DSN(數據來源名稱),才能讓網頁可以知道數據庫所在的位置以及數據庫相關的屬性。使用DSN的好處還有,如果移動數據庫檔案的位置,或是換成別種類型的數據庫,只要重新設定 DSN 就好了,不需要去修改原來使用的程序。”
4.JDBC操作的步驟:
1、 加載驅動程序
2、 連接數據庫
3、 操作數據庫
4、 關閉數據庫,釋放連接
參考資料:
https://blog.csdn.net/lxw1844912514/article/details/100028770
https://www.cnblogs.com/cainame/p/10339294.html
https://blog.csdn.net/cuiwjava/article/details/20202859
一、JDBC配置問題
1.JDBC-ODBC橋方式
(1)配置ODBC橋的流程中出問題
A.數據源(DSN)配置
在電腦中的 “控制面板——系統和安全——管理工具——數據源(ODBC)” 中配置ODBC橋的數據源
- 注1:數據源的英文DSN(Data Source Name)
- 注2:配置過程中的DSN名稱需要記住,用於後面用Java寫數據庫連接代碼中的創建連接()
private Connection conn;
conn=DriverManager.getConnection("jdbc:odbc:DSN名稱","用戶名","密碼");
- a. 沒有選擇與代碼中相匹配的用戶登錄ID和密碼
因爲在配置數據源的過程中,需要在
“用戶輸入登錄ID和密碼的SQL Server 驗證”下
輸入在數據庫創建的用戶及其對應密碼
- b. 沒有選擇與代碼中相匹配的數據庫
因爲在配置數據源的過程中,需要選擇該用戶操作的數據庫
數據源的配置過程可參考:
https://blog.csdn.net/qq_41187714/article/details/103494367
2.純Java方式
(1)JDBC驅動包與數據庫不匹配
比如 Microsoft SQL Server 2008 R2數據庫可以下載sqljdbc4驅動包
(2)添加驅動包的方法不正確
可以右鍵項目名——Build Path——Config Build Path...——Java Build Path ——Libraries——Add JARs或AddExternal JARS——OK
(3)驅動包路徑不對
常見於拷貝了別人的項目到自己的電腦裏
修改驅動包路徑的方法:在項目中重新加載驅動包,即可以重新添加驅動包
添加jar包方法可參考:
https://www.cnblogs.com/yhmdjl/p/6485303.html
注:
JAR(Java Archive)是Java的一種壓縮文檔格式
二、名字不匹配
主要是數據庫中的設置與代碼中的不匹配
(1)數據庫名
(2)數據庫對應的用戶名
(3)表名
比如 數據庫中的表名是tblXyInfo,而 Java代碼中寫的是卻是tblXyxx
(4)表名中的屬性名
比如 數據庫中的學院信息表 tblXyInfo 中有代碼XyId、名稱XyName、狀態XyState、添加時間XyTime這幾個屬性。
注意:
(1)大小寫的區分
(2)“同義詞”
比如:學院信息表
tblXyInfo ——table xue yuan information
tblXyxx ——table xue yuan xin xi
(5)與ODBC方法相關的數據源名
三、數據庫連接代碼
除了編譯中報的語法錯誤外,還可能存在如下問題:
1.沒有實例化對象
常會編寫一個xxxHelper.java 然後再實例化這個類的對象。
private OdbcHelper helper;//在類中定義成員
//private MssHelper helper;
helper = new OdbcHelper();//在類的方法中實例化這個成員
//helper = new MssHelper();
注:
OdbcHelper.java中存放 ODBC橋連接數據庫的代碼。(需配置數據源)
MssHelper.java中存放 直連數據庫的代碼。(需加載驅動包)
本篇文章將會持續更新....