由於系統需求
最近在開發過程中將系統從原來的MySQL轉移到SQL
下
其中遇到了諸多問題
花費了我不少時間
現在把我的經驗拿出來告訴大家
好讓大家少走彎路
節約時間
首先是SQL
數據庫的安裝問題
在此我主要講些關於SQL
的版本與操作系統的兼容性問題
SQL
總共有
個不同版本
適應不同等級用戶的需求
我試了一下
在XP系統下只有
個人開發版
能正常安裝而不出現錯誤
所以大家在安裝時要注意
具體安裝時的配置參照相關說明就可以了
下面說明如何連接到SQL
數據庫
首先當然是要下載JDBC驅動程序
最好去微軟官方網站下載
然後將下載到的三個JAR包放入你的WEB應用的WEB
INF/lib/下
接下來編寫程序進行測試
/***********************************************
/*
/*DBTest
java
/*
/******************************************* */
import java
sql
*;
public class DBTest {
Connection con;
Statement sta;
ResultSet rs;
String driver;
String url;
String user;
String pwd;
public DBTest()
{
driver =
com
microsoft
jdbc
sqlserver
SQLServerDriver
;;
url =
jdbc:microsoft:sqlserver://localhost:
;DatabaseName =test
;
//test為數據庫名
user =
sa
;
pwd =
sa
;
//請更改為你相應的用戶和密碼
init();
}
public void init()
{
try{
Class
forName(driver);
System
out
println(
driver is ok
);
con = DriverManager
getConnection(url
user
pwd);
System
out
println(
conection is ok
);
sta = con
createStatement();
rs = sta
executeQuery(
select * from room
);
while(rs
next())
System
out
println(rs
getInt(
roomNum
));
}catch(Exception e)
{
e
printStackTrace();
}
}
public static void main(String args[])//自己替換[]
{
new DBTest();
}
}
按道理講
上邊這段代碼應該沒錯
可首先我們來看一下
如果sqlser服務器沒有升級到sp
(在使用jdbc時
如果系統是xp或者
務必要把sqlserver 升級到sp
往上到處都有下的)
我們看看運行結果
driver is ok
java
sql
SQLException: [Microsoft][SQLServer
Driver for JDBC]Error establis
hing socket
at com
microsoft
jdbc
base
BaseExceptions
createException(Unknown Source)
at com
microsoft
jdbc
base
BaseExceptions
getException(Unknown Source)
at com
microsoft
jdbc
base
BaseExceptions
getException(Unknown Source)
at com
microsoft
jdbc
sqlserver
tds
TDSConnection
<init>(Unknown Source)
at com
microsoft
jdbc
sqlserver
SQLServerImplConnection
open(Unknown Source)
at com
microsoft
jdbc
base
BaseConnection
getNewImplConnection(Unknown Source)
at com
microsoft
jdbc
base
BaseConnection
open(Unknown Source)
at com
microsoft
jdbcnnect(Unknown Source)
at java
sql
DriverManager
getConnection(DriverManager
java:
)
at java
sql
DriverManager
getConnection(DriverManager
java:
)
at DbTest
init(DbTest
java:
)
at DbTest
<init>(DbTest
java:
)
at DbTest
main(DbTest
java:
)
Press any key to continue
出現上邊錯誤的主要原因是默認的數據庫服務器端口
沒有打開
無法直接連接
如果升級到sp
則這個問題可以結決
我們再來看看升級之後
程序運行的結果
driver is ok
conection is ok
java
sql
SQLException: [Microsoft][SQLServer
Driver for JDBC][SQLServer]對象名
room
無效
at com
microsoft
jdbc
base
BaseExceptions
createException(Unknown Source)
at com
microsoft
jdbc
base
BaseExceptions
getException(Unknown Source)
at com
microsoft
jdbc
sqlserver
tds
TDSRequest
processErrorToken(UnknownSource)
at com
microsoft
jdbc
sqlserver
tds
TDSRequest
processReplyToken(UnknownSource)
at com
microsoft
jdbc
sqlserver
tds
TDSExecuteRequest
processReplyToken(Unknown Source)
at com
microsoft
jdbc
sqlserver
tds
TDSRequest
processReply(Unknown Source)
at com
microsoft
jdbc
sqlserver
SQLServerImplStatement
getNextResultType(Unknown Source)
at com
microsoft
jdbc
bamonTransitionToState(UnknownSource)
at com
microsoft
jdbc
base
BaseStatement
postImplExecute(Unknown Source)
at com
microsoft
jdbc
bamonExecute(Unknown Source)
at com
microsoft
jdbc
base
BaseStatement
executeQueryInternal(Unknown Source)
at com
microsoft
jdbc
base
BaseStatement
executeQuery(Unknown Source)
at DbTest
init(DbTest
java:
)
at DbTest
<init>(DbTest
java:
)
at DbTest
main(DbTest
java:
)
Press any key to continue
在這兒
用戶已經登陸上去
但是卻不能訪問裡邊的數據表
出現這個問題的原因在於sa用戶為系統用戶
它雖然能夠登陸數據庫
但是test數據庫裡邊卻沒有這個用戶的訪問權限
所以
我們現在為這個數據庫重新建立一個用戶
share
建立過程如下
在test數據庫中選重用戶
〉新建用戶
〉名稱選擇(這一步中有兩個關鍵點
身份驗證選sql身份驗證
默認數據庫選test)
〉建立新教色share
此時更改程序
將用戶登陸名和密碼修改一下
重新運行程序
driver is ok
conection is ok
Press any key to continue
這次順利通過測試
哈哈
其實這些小問題花了我一個晚上才解決
真是浪費時間
所以寫下來希望能使遇到類似問題的朋友不要重蹈覆轍
在此提醒大家遇到問題時多上網查查
多在論壇裡問問
這樣你學到的會更多
更節省時間
更有效率
總結
sqlserve 和jdbc 的融合問題
關鍵涉及到sp
補丁(端口開放)還有用戶問題
解決這兩個問題之後
剩余的便是sqlserver 操作問題了
還有一點在遠程操作的時候
要把sqlserver 組設置一下
在安全性裡邊亦將身份驗證更改為sqlserve 驗證即可
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26395.html