亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL Server2000+JDBC常見問題及解決

添加時(shí)間:2013-5-23 17:46:11  添加: 思海網(wǎng)絡(luò) 
SQL Server 2000 是當(dāng)今網(wǎng)絡(luò)編程中使用的比較多的一個(gè)數(shù)據(jù)庫系統(tǒng),java是目前最流行的編程語言,在編程中涉及的比較多也比較重要的就是數(shù)據(jù)庫問題,java自身提供了對(duì)各類主流數(shù)據(jù)庫系統(tǒng)的支持,通過java.sql 庫,提供了統(tǒng)一的接口,使得可以在java環(huán)境下不必對(duì)程序作大規(guī)模的修改,只要更改相應(yīng)的驅(qū)動(dòng)程序,即可實(shí)現(xiàn)對(duì)各類數(shù)據(jù)庫的操作,從而提高軟件的生存周期和降低軟件的開發(fā)成本和維護(hù)費(fèi)用,在這種情況下SQL Server 2000 和java 的融合問題就顯得比較重要了,本文簡(jiǎn)要地闡述一下SQL Server 2000 和jdk的融合問題。

  系統(tǒng)需求:

   數(shù)據(jù)庫:SQL Server 2000 sp3
   驅(qū)動(dòng)程序:SQL Server driver for jdbc
   java版本:jdk1.2以上

  1:我們首先使用jdbc-odbc橋來實(shí)現(xiàn)數(shù)據(jù)庫的連接,這個(gè)相對(duì)簡(jiǎn)單。
  
  首先使用SQL Server 企業(yè)管理其建立一個(gè)數(shù)據(jù)庫test,并建立一個(gè)簡(jiǎn)單的表 first_table

  建立odbc數(shù)據(jù)源 ,各步驟采用默認(rèn)操作即可

  編寫一個(gè)簡(jiǎn)單的測(cè)試程序,該程序主要實(shí)現(xiàn)數(shù)據(jù)庫的連接,以及一個(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.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ùn)行結(jié)果如下:

driver is ok
conection is ok
1001
1002
1003
1004
1005
1006
Press any key to continue...

  順利通過測(cè)試

  2、我們這次不通過odbc橋來操作數(shù)據(jù)庫,我們采用SQL Server driver 來實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫的操作, 這將是我們這篇文章的重點(diǎn),因?yàn)閖dbc-odbc橋是一種常見的操作windows系統(tǒng)數(shù)據(jù)庫的常用方法,但它存在的缺點(diǎn)很多,所以現(xiàn)在很多開發(fā)者都側(cè)重于使用sqlserver driver來操作,在這里我們通過一步步的調(diào)試,來加深讀者對(duì)這種連接的理解

  在通常的理解下,只要我們裝了sqlserver driver for jdbc 我們便可進(jìn)行數(shù)據(jù)庫編程,事實(shí)則不然,首先我們看下邊的代碼:

/***********************************************
/*
/*DbTest.java
/*http://www.knowsky.com
/******************************************* */

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ò),可首先我們來看一下,如果SQL Server服務(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ù)庫服務(wù)器端口 1433沒有打開,無法直接連接 。

  如果升級(jí)到sp3則這個(gè)問題可以結(jié)決,我們?cè)賮砜纯瓷?jí)之后,程序運(yùn)行的結(jié)果

driver is ok
conection is ok
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]對(duì)
象名 '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)這個(gè)問題的原因在于sa用戶為系統(tǒng)用戶,它雖然能夠登陸數(shù)據(jù)庫,但是storeManager數(shù)據(jù)庫里邊卻沒有這個(gè)用戶的訪問權(quán)限,所以,我們現(xiàn)在為這個(gè)數(shù)據(jù)庫重新建立一個(gè)用戶share ,建立過程如下:在storeManager數(shù)據(jù)庫中選重用戶 ---〉新建用戶 -- 〉名稱選擇(這一步中有兩個(gè)關(guān)鍵點(diǎn) 1:身份驗(yàn)證選sql身份驗(yàn)證,默認(rèn)數(shù)據(jù)庫選StoreManager)-〉建立新教色share ,此時(shí)更改程序,將用戶登陸名和密碼修改一下,重新運(yùn)行程序

driver is ok
conection is ok
1001
1002
1003
1004
1005
1006
Press any key to continue...

  這次順利通過測(cè)試

  總結(jié):

  SQL Server和jdbc 的融合問題,關(guān)鍵涉及到sp3補(bǔ)丁(端口開放)還有用戶問題,解決這兩個(gè)問題之后,剩余的便是sqlserver 操作問題了,還有一點(diǎn)在遠(yuǎn)程操作的時(shí)候,要把sqlserver 組設(shè)置一下,在安全性里邊亦將身份驗(yàn)證更改為SQL Server 驗(yàn)證即可。

關(guān)鍵字:SQL Server、jdbc 、端口

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站