国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

sqlserver2000h和jdbc的融合問題

2019-11-18 16:13:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  sql server 2000 是當(dāng)今網(wǎng)絡(luò)編程中使用的比較多的一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),而java則是流行的網(wǎng)絡(luò)編程語(yǔ)言,在網(wǎng)絡(luò)編程中涉及的比較多也比較重要的就是數(shù)據(jù)庫(kù)問題,java自身提供了對(duì)各類主流數(shù)據(jù)庫(kù)系統(tǒng)的支持,通過提供java.sql 庫(kù),提供了一個(gè)統(tǒng)一的接口,使得可以在java環(huán)境下不必對(duì)程序作大規(guī)模的修改,只要更改相應(yīng)的驅(qū)動(dòng)程序,即可實(shí)現(xiàn)對(duì)各類數(shù)據(jù)庫(kù)的操作,從而提高軟件的生存周期和降低軟件的開發(fā)成本和維護(hù)費(fèi)用,在這種情況下sql server 2000 和java 的融合問題就顯得比較重要了,本文簡(jiǎn)要地闡述一下sql server 2000 和jdk的融合問題。
  
  系統(tǒng)需求
  
  數(shù)據(jù)庫(kù):sql server 2000 sp3
  
  驅(qū)動(dòng)程序:sql server driver for jdbc
  
  java版本:jdk1.2以上
  
  1:我們首先使用jdbc-odbc橋來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接,這個(gè)相對(duì)簡(jiǎn)單
  
  首先使用sql server 企業(yè)管理其建立一個(gè)數(shù)據(jù)庫(kù)test,并建立一個(gè)簡(jiǎn)單的表 first_table
  
  建立odbc數(shù)據(jù)源 ,各步驟采用默認(rèn)操作即可
  
  編寫一個(gè)簡(jiǎn)單的測(cè)試程序,該程序主要實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接,以及一個(gè)簡(jiǎn)單的sql操作 ,代碼如下:
  
  /*********************************************** /* /*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 = "sun.jdbc.odbc.JdbcOdbcDriver";       url  = "jdbc:odbc:store_manager";       user  = "share";       pwd  = "share";       init();     }     public void init()     {         try{           Class.forName(driver);           System.out.  
  運(yùn)行結(jié)果如下:
  
  driver is ok
  conection is ok
  1001
  1002
  1003
  1004
  1005
  1006
  Press any key to continue...
  
  順利通過測(cè)試
  
  2,我們這次不通過odbc橋來(lái)操作數(shù)據(jù)庫(kù),我們采用sql server driver 來(lái)實(shí)現(xiàn)對(duì)sqlserver數(shù)據(jù)庫(kù)的操作, 這將是我們這篇文章的重點(diǎn),因?yàn)閖dbc-odbc橋是一種常見的操作windows系統(tǒng)數(shù)據(jù)庫(kù)的常用方法,但它存在的缺點(diǎn)很多,所以現(xiàn)在很多開發(fā)者都側(cè)重于使用sqlserver driver來(lái)操作,在這里我們通過一步步的調(diào)試,來(lái)加深讀者對(duì)這種連接的理解
  
  在通常的理解下,只要我們裝了sqlserver driver for jdbc 我們便可進(jìn)行數(shù)據(jù)庫(kù)編程,事實(shí)則不然,首先我們看下邊的代碼:
  
  /*********************************************** /* /*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 =StoreManager";       user  = "sa";       pwd  = "potsmart10";       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();     } }
  
  這段代碼跟上變得代碼是一樣的,差別在于驅(qū)動(dòng),還有url,這是在使用sqlserver driver for jdbc 中遇到的困惑
  
  按道理講,上邊這段代碼應(yīng)該沒錯(cuò),可首先我們來(lái)看一下,如果sqlser服務(wù)器沒有升級(jí)到sp3(在使用jdbc時(shí),如果系統(tǒng)是XP或者2003務(wù)必要把sqlserver 升級(jí)到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)上邊錯(cuò)誤的主要原因是默認(rèn)的數(shù)據(jù)庫(kù)服務(wù)器端口 1433沒有打開,無(wú)法直接連接 。
  
  如果升級(jí)到sp3則這個(gè)問題可以結(jié)決,我們?cè)賮?lái)看看升級(jí)之后,程序運(yùn)行的結(jié)果
  
  driver is ok
  conection is ok
  java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]對(duì)象名 'room' 無(wú)效。
  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)這個(gè)問題的原因在于sa用戶為系統(tǒng)用戶
  
  它雖然能夠登陸數(shù)據(jù)庫(kù),但是storeManager數(shù)據(jù)庫(kù)里邊卻沒有這個(gè)用戶的訪問權(quán)限,所以,我們現(xiàn)在為這個(gè)數(shù)據(jù)庫(kù)重新建立一個(gè)用戶share ,建立過程如下:在storeManager數(shù)據(jù)庫(kù)中選重用戶 ---〉新建用戶 -- 〉名稱選擇(這一步中有兩個(gè)關(guān)鍵點(diǎn) 1:身份驗(yàn)證選sql身份驗(yàn)證,默認(rèn)數(shù)據(jù)庫(kù)選StoreManager)-〉建立新教色share ,此時(shí)更改程序,將用戶登陸名和密碼修改一下,重新運(yùn)行程序
  
  driver is ok
  conection is ok
  1001
  1002
  1003
  1004
  1005
  1006
  Press any k

(出處:http://m.survivalescaperooms.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 城市| 奉新县| 满洲里市| 罗定市| 樟树市| 綦江县| 岫岩| 光泽县| 平乐县| 松滋市| 左权县| 乳山市| 孙吴县| 留坝县| 辉县市| 长岭县| 丽江市| 肇东市| 株洲县| 清丰县| 罗江县| 肥乡县| 龙口市| 南木林县| 牡丹江市| 义马市| 济阳县| 文昌市| 宜州市| 忻城县| 通许县| 永丰县| 休宁县| 乾安县| 永宁县| 桃江县| 米泉市| 夹江县| 嘉义市| 大安市| 穆棱市|