當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
[转摘] JSP连接SQL SERVER问题总结
生活随笔
收集整理的這篇文章主要介紹了
[转摘] JSP连接SQL SERVER问题总结
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
| 由于系統(tǒng)需求,最近在開發(fā)過程中將系統(tǒng)從原來的MySQL轉(zhuǎn)移到SQL?2000下,其中遇到了諸多問題,花費(fèi)了我不少時間?,F(xiàn)在把我的經(jīng)驗(yàn)?zāi)贸鰜砀嬖V大家,好讓大家少走彎路,節(jié)約時間。 首先是SQL?2000數(shù)據(jù)庫的安裝問題,在此我主要講些關(guān)于SQL?2000的版本與操作系統(tǒng)的兼容性問題:SQL?2000總共有7個不同版本,適應(yīng)不同等級用戶的需求。 我試了一下,在XP系統(tǒng)下只有“個人開發(fā)版”能正常安裝而不出現(xiàn)錯誤,所以大家在安裝時要注意,具體安裝時的配置參照相關(guān)說明就可以了。 下面說明如何連接到SQL?2000數(shù)據(jù)庫,首先當(dāng)然是要下載JDBC驅(qū)動程序,最好去微軟官方網(wǎng)站下載,然后將下載到的三個JAR包放入你的WEB應(yīng)用的WEB-INF/lib/下。接下來編寫程序進(jìn)行測試: /*********************************************** ?/* ?/*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:1433;DatabaseName?=test"; ??????//test為數(shù)據(jù)庫名 ??????user???=?"sa"; ??????pwd????=?"sa"; ??????//請更改為你相應(yīng)的用戶和密碼 ??????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(); ??} ?} 按道理講,上邊這段代碼應(yīng)該沒錯,可首先我們來看一下,如果sqlser服務(wù)器沒有升級到sp3(在使用jdbc時,如果系統(tǒng)是xp或者2003務(wù)必要把sqlserver?升級到sp3,往上到處都有下的),我們看看運(yùn)行結(jié)果:? driver?is?ok java.sql.SQLException:?[Microsoft] [SQLServer?2000?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?Sou rce) ????????at?com.microsoft.jdbc.base. ??BaseConnection.getNewImplConnection(Unknown?S ource) ????????at?com.microsoft.jdbc.base. ??BaseConnection.open(Unknown?Source) ????????at?com.microsoft.jdbc.base. ??BaseDriver.connect(Unknown?Source) ????????at?java.sql.DriverManager. ??getConnection(DriverManager.java:523) ????????at?java.sql.DriverManager. ??getConnection(DriverManager.java:171) ????????at?DbTest.init(DbTest.java:32) ????????at?DbTest.<init>(DbTest.java:25) ????????at?DbTest.main(DbTest.java:46) Press?any?key?to?continue... 出現(xiàn)上邊錯誤的主要原因是默認(rèn)的數(shù)據(jù)庫服務(wù)器端口?1433沒有打開,無法直接連接。如果升級到sp3則這個問題可以結(jié)決,我們再來看看升級之后,程序運(yùn)行的結(jié)果:? driver?is?ok conection?is?ok java.sql.SQLException:? [Microsoft][SQLServer?2000?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(Unknown ?Source) ????????at?com.microsoft.jdbc.sqlserver.tds. ??TDSRequest.processReplyToken(Unknown ?Source) ????????at?com.microsoft.jdbc.sqlserver.tds. ??TDSExecuteRequest.processReplyToken( Unknown?Source) ????????at?com.microsoft.jdbc.sqlserver.tds. ??TDSRequest.processReply(Unknown?Sour ce) ????????at?com.microsoft.jdbc.sqlserver. ??SQLServerImplStatement.getNextResultType (Unknown?Source) ????????at?com.microsoft.jdbc.base. ??BaseStatement.commonTransitionToState ??(Unknown ?Source) ????????at?com.microsoft.jdbc.base. ??BaseStatement.postImplExecu te(Unknown?Source) ????????at?com.microsoft.jdbc.base. ??BaseStatement.commonExecute(Unknown?Source) ????????at?com.microsoft.jdbc.base. ??BaseStatement.executeQueryInternal ??(Unknown?So urce) ????????at?com.microsoft.jdbc.base. ??BaseStatement.executeQuery(Unknown?Source) ????????at?DbTest.init(DbTest.java:35) ????????at?DbTest.<init>(DbTest.java:25) ????????at?DbTest.main(DbTest.java:46) Press?any?key?to?continue... 在這兒,用戶已經(jīng)登陸上去,但是卻不能訪問里邊的數(shù)據(jù)表,出現(xiàn)這個問題的原因在于sa用戶為系統(tǒng)用戶,它雖然能夠登陸數(shù)據(jù)庫,但是test數(shù)據(jù)庫里邊卻沒有這個用戶的訪問權(quán)限,所以,我們現(xiàn)在為這個數(shù)據(jù)庫重新建立一個用戶share,建立過程如下:? 在test數(shù)據(jù)庫中選重用戶?---〉新建用戶?--?〉名稱選擇(這一步中有兩個關(guān)鍵點(diǎn):身份驗(yàn)證選sql身份驗(yàn)證,默認(rèn)數(shù)據(jù)庫選test)-〉建立新教色share?,此時更改程序,將用戶登陸名和密碼修改一下,重新運(yùn)行程序:? driver?is?ok conection?is?ok 1001 1002 1003 1004 1005 1006 Press?any?key?to?continue... 這次順利通過測試? 其實(shí)這些小問題花了我一個晚上才解決,真是浪費(fèi)時間,所以寫下來希望能使遇到類似問題的朋友不要重蹈覆轍,在此提醒大家遇到問題時多上網(wǎng)查查,多在論壇里問問,這樣你學(xué)到的會更多,更節(jié)省時間,更有效率。? 總結(jié):Sqlserve?和JDBC?的融合問題,關(guān)鍵涉及到sp3補(bǔ)丁(端口開放)還有用戶問題,解決這兩個問題之后,剩余的便是Sqlserver?操作問題了,還有一點(diǎn)在遠(yuǎn)程操作的時候,要把Sqlserver?組設(shè)置一下,在安全性里邊亦將身份驗(yàn)證更改為Sqlserve?驗(yàn)證即可。? |
轉(zhuǎn)載于:https://www.cnblogs.com/fhj2050/archive/2007/02/06/641936.html
總結(jié)
以上是生活随笔為你收集整理的[转摘] JSP连接SQL SERVER问题总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈协同软件实施特点与过程
- 下一篇: 大学最后一个学期了,感觉没对头。。。