在寫一個Servlet程序連接數據庫SQL SERVER2005,連接代碼如下:
1
Connection conn = null;
2
Statement st = null;
3
response.setContentType("text/html;charset=gb2312");
4
PrintWriter out = response.getWriter();
5
try
{
6
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
7
conn = DriverManager
8
.getConnection(
9
"jdbc:sqlserver://MY-NOTEBOOK;DatabaseName=BOOKS",
10
"sa", "********");
11
st = conn.createStatement();
12
st.executeUpdate("insert into tblBookInfo(bookBarCode,bookName,bookAuthor,bookPrice,bookIntroduce) values('"
13
+ bookBarCode
14
+ "','"
15
+ bookName
16
+ "','"
17
+ bookAuthor
18
+ "'," + bookPrice + ",'" + bookIntroduce + "')");
19
conn.close();
20
out.println("圖書添加成功!");
21
} catch (Exception e)
{
22
out.println("發生如下錯誤:<br>");
23
out.println(e.getMessage());
24
}
報如下錯誤:
通過端口 1433 連接到主機 MY-NOTEBOOK 的 TCP/IP 連接失敗。錯誤:“Connection refused: connect。請驗證連接屬性,并檢查 SQL Server 的實例正在主機上運行,且在此端口接受 TCP/IP 連接,還要確保防火墻沒有阻止到此端口的 TCP 連接。”。 從SQL Server Management Studio里可以正常登錄數據庫,經過一翻百度、Google后,未果。
經分析發生此故障的原因為數據庫系統的TCP/IP網絡協議未啟動所導致。
解決方法:
打開SQL Server Configuration Manager控制臺界面,從左邊的樹形菜單里選擇 SQL Server 2005網絡配置 -> MSSQLSERVER 的協議,將右邊列出的 TCP/IP 和Named Pipes 都設置為啟動狀態,再重啟啟動SQL Server(MSSQLSERVER)服務,測試通過。另:
conn = DriverManager.getConnection( "jdbc:sqlserver://MY-NOTEBOOK:1433;DatabaseName=BOOKS", "sa", "********");
這里寫不寫端口號都可以連接成功。如果想使用JDBC連接SQL SERVER2005,需要下載JDBC 3.0 For SQL SERVER2005 (
http://www.microsoft.com/downloads/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displayLang=zh-cn),安裝完后,進入其安裝目錄X:\Program Files\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs,將sqljdbc4.jar文件復制到
Tomcat安裝目錄的Lib文件夾里即可正常使用。
測試環境:WIN7,JDK1.6.0_21,JRE6,Apache Tomcat7.02,SQL SERVER2005,JDBC 3.0 For SQL SERVER2005 如有不明白的地方,請給我留言!