在剛剛接觸使用JDBC連接數據庫時,總會碰到很多問題,讓人無所適從。所以,筆者以SQL Server
爲例,詳細講解如何使用JDBC連接SQL Server。下載請點擊SQL Server 2017、SQL Server 2016
在開始之前,請先正確安裝SQL Server和Tomcat。(筆者是以SQL Server 2017和Tomcat9.0.1進行演示)
準備:在正確安裝SQL server和Tomcat之後,打開cmd,運行指令“telnet 127.0.0.1 1433”,如果出現
“telnet不是內部指令或程序......”說明你沒有打開telnet服務,那麼請參考筆者另一篇博客“打開telnet服務問題”
如果正確打開telnet服務,但是運行上述telnet指令,出現“無法連接127.0.0.1,端口1433......”,則說明要對SQL
Server進行配置,接下來就是詳細的配置過程。
第一步:使用鍵盤快捷鍵“window+x”選擇“計算機管理”或者直接使用SQL Server配置管理器,如圖:
第二步:打開的窗口如下圖所示。在左邊欄找到 SQL Server網絡配置選項,點開它的小箭頭,會
看到“【你的數據庫名】的協議” ,選中它,看右邊欄。如圖:
第三步:如果Named Pipes 未啓用,則右鍵→啓用,右鍵單擊 TCP/IP,選擇 啓用,雙擊TCP/IP
(右鍵→屬性),在彈出的窗口中選擇 “IP地址” 選項卡,將IP1和IP10的【IP地址】設爲127.0.0.1,
並將所有【IPx】的【已啓用】設爲是。接着,拖動下拉條到最下方,將 IPAll 中的【TCP端口】設
成 【1433】,其餘不變。如圖:
第四步:重新啓動計算機,接下來使用telnet命令“telnet 127.0.0.1 1433”測試1433端口是否打開。
第五步:環境變量CLASSPATH配置:下載JDBC,然後在D盤新建一個文件夾,命名爲sqljdbc4,將
sqljdbc42.jar複製一個進去。
第六步:右擊 我的電腦 → 屬性 → 高級系統設置(高級) → 環境變量,在系統變量中雙擊
CLASSPATH變量(或選中CLASSPATH後 → 編輯),在最後面追加 “;D:\sqljdbc42\sqljdbc42.jar”
(注意最前面有個 ; )若不存在CLASSPATH,就新建CLASSPATH變量,並且將其值設
爲“D:\sqljdbc42\sqljdbc42.jar”。連續點擊 確定 以退出環境變量配置。
第七步:(非常重要)我們需要將sqljdbc4.jar類庫文件拷貝到D:\Java Tools\jdk1.7.0\jre\lib\ext目
錄下。(看你安裝在哪個盤,如果是C盤,則最前面的D改爲C,下同)。
我們需要將sqljdbc42.jar類庫文件拷貝到D:\Program Files\Java\jre7\lib\ext目錄下最好是,只要
是jre文件夾,都複製一個sqljdbc42.jar到jre7\lib\ext裏去!!
如果是使用Tomcat做服務器(我使用的是Tomcat7),那麼我們需要將sqljdbc42.jar類庫文件
拷貝到D:\Tomcat_9.0.1\lib目錄下。
第八步:打開SQL Server 2017,在其中新建數據庫 Test,然後退出SQL Server2017。
運行Eclipse,新建一個JavaProject 名爲 Test。右單擊src,依次選擇 Build Path → Configure Build Path,在
打開的窗口的右邊選擇 Libraries標籤,然後單擊 Add External JARs,找到 sqljdbc42.jar 文件並打
開,然後單擊 OK 完成構建路徑的配置。如圖:
最後:輸入代碼測試
importjava.sql.*;
publicclass Main {
publicstatic void main(String [] args)
{
StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=你的數據庫名";
String userName="填寫你的用戶名,我的是sa";
String userPwd="填寫你的密碼";
try
{
Class.forName(driverName);
ConnectiondbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("連接數據庫成功");
}
catch(Exception e)
{
e.printStackTrace();
System.out.print("連接失敗");
}
}
}