一次在重裝系統(tǒng)并重新搭建 JAVA 運(yùn)行環(huán)境后,為了測(cè)試運(yùn)行環(huán)境是否搭建好,寫(xiě)了一個(gè)非常簡(jiǎn)單的 JDBC 程序測(cè)試數(shù)據(jù)庫(kù)連接。

          IDE Eclipse3.2

          DB SQLServer2000

          Driver MS 的官方驅(qū)動(dòng): msbase.jar mssqlserver.jar msutil.jar

          源程序如下:

          文件名: SqlServerTest.java

          package test;

           

          import java.sql.*;

           

          /**

            * @author lpeter SQLServer 連接測(cè)試

            */

          public class SqlServerTest {

              // 驅(qū)動(dòng)類(lèi)

              static String driverClass =

                 "com.microsoft.jdbc.sqlserver.SQLServerDriver" ;

              // 連接字符串

              static String url =

                 "jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test" ;

              // 密碼

              static String password = "peter" ;

               // 用戶(hù)名

              static String username = "peter" ;

              // 待執(zhí)行的 SQL 語(yǔ)句

              static String sql = "SELECT * FROM Test" ;

           

              public static void main(String[] args) {

                 Connection conn = null ;

                 PreparedStatement pstmt = null ;

                 ResultSet rs = null ;

           

                 try {

                     Class.forName( driverClass );

                     conn = DriverManager.getConnection( url , username , password );

                     pstmt = conn.prepareStatement( sql );

                     rs = pstmt.executeQuery();

                     while (rs.next()) {

                        System. out .println( "OK." );

                     }

                     System. out .println( "OK too." );

                     rs.close();

                     pstmt.close();

                     conn.close();

                 } catch (ClassNotFoundException e) {

                     System. out .println( " 驅(qū)動(dòng)類(lèi)沒(méi)有找到 ." );

                     e.printStackTrace();

                 } catch (SQLException e) {

                     e.printStackTrace();

                 } finally {

                     if (rs != null ) // 結(jié)果集沒(méi)有關(guān)閉時(shí)關(guān)閉結(jié)果集

                        try {

                            rs.close();

                        } catch (SQLException e) {

                            e.printStackTrace();

                        }

                     if (pstmt != null ) // 發(fā)送對(duì)象沒(méi)有關(guān)閉時(shí)關(guān)閉發(fā)送對(duì)象

                        try {

                            pstmt.close();

                        } catch (SQLException e) {

                            e.printStackTrace();

                        }

                     if (conn != null )  // 連接沒(méi)有關(guān)閉時(shí)關(guān)閉連接

                        try {

                            conn.close();

                        } catch (SQLException e) {

                            e.printStackTrace();

                        }

                 }

           

              }

          }

          執(zhí)行這段程序時(shí),出現(xiàn)錯(cuò)誤:

          java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing 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.jdbc.base.BaseDriver.connect(Unknown Source)

              at java.sql.DriverManager.getConnection( DriverManager.java:523 )

              at java.sql.DriverManager.getConnection( DriverManager.java:171 )

              at test.SqlServerTest.main( SqlServerTest.java:29 )

           

          出現(xiàn)了這個(gè)錯(cuò)誤,我馬上想到連接字符串有問(wèn)題。可在網(wǎng)上找了好幾個(gè)版本都是這樣。

          后來(lái)由于某種偶然原因,我知道了 SQLServer 可以設(shè)置查看端口號(hào)。步驟如下:

          1.  打開(kāi)企業(yè)管理器,依次在控制臺(tái)根目錄 ->Microsoft SQL Servers->SQL Server 組,列出一部分?jǐn)?shù)據(jù)庫(kù)服務(wù)器。

          2.  右擊我們要連接的數(shù)據(jù)庫(kù)服務(wù)器,選擇屬性,在常規(guī)選項(xiàng)卡點(diǎn)擊網(wǎng)絡(luò)配置彈出新窗口。

          3.  在啟用的協(xié)議區(qū)域我們選擇 TCP/IP ,點(diǎn)擊屬性按鈕,彈出新窗口。在這個(gè)窗口有網(wǎng)絡(luò)協(xié)議默認(rèn)值設(shè)置,我在這里看到我的默認(rèn)端口是: 4067 。因面在使用 1433 連接數(shù)據(jù)庫(kù)時(shí)出錯(cuò)。

           

          把端口號(hào)修改為 4067 即修改:

          static String url =

                 "jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test" ;

          為:

          static String url =

                 "jdbc:microsoft:sqlserver://127.0.0.1:4067;dataBaseName=Test" ;

          后,執(zhí)行程序,輸出: OK too.

           

          測(cè)試連接成功。

          Feedback

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2007-12-07 00:19 by Angela
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;

          public class Type4 {
          public static void main(String[] args) {
          try {
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
          .newInstance();
          System.out.println("數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序注冊(cè)成功!");
          String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Northwind";
          String user = "sa";
          String password = "sa";
          Connection conn = DriverManager.getConnection(url, user, password);
          System.out.println("數(shù)據(jù)庫(kù)連接成功");
          } catch (Exception e) {
          e.printStackTrace();
          System.out.println("數(shù)據(jù)庫(kù)連接失敗");
          }

          }
          }



          數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序注冊(cè)成功!
          java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing 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.jdbc.base.BaseDriver.connect(Unknown Source)
          at java.sql.DriverManager.getConnection(DriverManager.java:512)
          at java.sql.DriverManager.getConnection(DriverManager.java:171)
          at Type4.main(Type4.java:14)
          數(shù)據(jù)庫(kù)連接失敗

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2007-12-07 00:22 by Angela
          端口號(hào)是1433,但還是連接不上
          不知道怎么搞,請(qǐng)高手指點(diǎn),謝謝!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。[未登錄](méi)  回復(fù)  更多評(píng)論   

          2007-12-07 12:44 by 李鵬
          @Angela

          可以先查看端口號(hào)是否打開(kāi)
          在CMD中輸入命令: netstat 看有沒(méi)有1433

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-01-04 15:55 by rock
          你的系統(tǒng)是XP第二版吧? XP第二版不支持JDBC連接 我一般使用ODBC 我用JDBC時(shí)也是出現(xiàn)你那個(gè)錯(cuò)誤

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-01-15 11:56 by dd
          @Angela

          打上sp4補(bǔ)丁試試

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-01-17 14:56 by Angela
          早解決了啊!謝謝啊!
          是sql沒(méi)有打補(bǔ)丁!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-02-23 21:00 by 小刀
          你是怎么解決的啊?
          教教小弟啊。

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-03-06 17:20 by 思春帖調(diào)查員
          樓上的.
          你給sqlserver 打個(gè)sp3補(bǔ)丁就行了
          否則windows 2003下即使端口設(shè)置正確也會(huì)出現(xiàn)以上錯(cuò)誤.

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-03-30 23:38 by 文文
          我的是XP啊
          還是中文的啊
          可是SP3不是還沒(méi)有中文的嗎
          那怎么辦啊!~

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-04-26 16:11 by xiaolong
          我 補(bǔ)丁 打了 驅(qū)動(dòng)換了 端口 改了 環(huán)境 變量設(shè)置了 可是 錯(cuò)誤依然!!
          后來(lái) 我用 CMD 命令 NETSTAT 查 1433 的 端口 有沒(méi)有 打開(kāi) 可是 居然沒(méi)有 我把 SQL的企業(yè)管理器 重起 依然如故 我快崩潰了!!! 哪位大哥 能不能 解決一下!!!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-07-10 20:46 by superman
          這種情況只有重裝sqlserver了!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-09-12 23:26 by hokel
          在本地服務(wù)器的網(wǎng)絡(luò)配置的TCP\IP的屬性值是1433,但是在cmd中以netstat查看端口號(hào)卻沒(méi)有1433,使得JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.無(wú)法解決請(qǐng)大哥指點(diǎn)指點(diǎn)!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-11-19 15:58 by longlongago
          我也是上面的那個(gè)問(wèn)題.
          我 補(bǔ)丁 打了 驅(qū)動(dòng)換了 端口 改了 環(huán)境 變量設(shè)置了 可是 錯(cuò)誤依然!!
          我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然沒(méi)有沒(méi)有打開(kāi)
          我把 SQL的企業(yè)管理器 重起 依然如故!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-12-03 17:42 by fxf
          是應(yīng)該升級(jí)到sqlsp3包

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2008-12-06 00:04 by nimama
          我也是上面的那個(gè)問(wèn)題.
          我 補(bǔ)丁 打了 驅(qū)動(dòng)換了 端口 改了 環(huán)境 變量設(shè)置了 可是 錯(cuò)誤依然!!
          我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然沒(méi)有沒(méi)有打開(kāi)
          我把 SQL的企業(yè)管理器 重起 依然如故!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2009-01-17 14:28 by liuchuan
          @Angela
          我的系統(tǒng)是Windows Server 2000系統(tǒng)、數(shù)據(jù)庫(kù)是SQLServer 2000的,打的是SP4的補(bǔ)丁,連接數(shù)據(jù)庫(kù)時(shí)有時(shí)候能連接上,有時(shí)候連接不上,報(bào)的錯(cuò)誤也是Error establishing socket。有沒(méi)有知道的,幫忙解決一下吧!

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2009-03-03 01:35 by qiandy
          用 CMD 命令NETSTAT查1433(這是默認(rèn)的端口,可能被占用,你可以重新設(shè)一個(gè)新的端口)的端口可是居然沒(méi)有沒(méi)有打開(kāi),先看看你的服務(wù)器有沒(méi)有打開(kāi),如果都大開(kāi)了那就說(shuō)明你沒(méi)有裝sp3或sp4的補(bǔ)丁.

          還有一個(gè)方法看你是不是要打補(bǔ)丁,那就是看看你的版本號(hào):
          可以用如下的方式查看MSSQL的版本:
          打開(kāi)企業(yè)管理器-〉工具-〉SQL查詢(xún)分析器-〉幫助-〉關(guān)于
          查看MSSQL的詳細(xì)版本號(hào)
          如果 是 8.00.194 就是還沒(méi)打補(bǔ)丁
          8.00.760 就是SP3
          8.00.2039 就是SP4
          如果你的版本號(hào)是對(duì)的,但NETSTAT查1433沒(méi)有,那可能你的1433端口被占了,換一個(gè)端口應(yīng)該就可以了.
          換端口的方法是:1. 打開(kāi)企業(yè)管理器,依次在控制臺(tái)根目錄 ->Microsoft SQL Servers->SQL Server 組,列出一部分?jǐn)?shù)據(jù)庫(kù)服務(wù)器。
          2. 右擊我們要連接的數(shù)據(jù)庫(kù)服務(wù)器,選擇屬性,在常規(guī)選項(xiàng)卡點(diǎn)擊網(wǎng)絡(luò)配置彈出新窗口。
          3. 在啟用的協(xié)議區(qū)域我們選擇 TCP/IP ,點(diǎn)擊屬性按鈕,彈出新窗口。在這個(gè)窗口有網(wǎng)絡(luò)協(xié)議默認(rèn)值設(shè)置,一般默認(rèn)端口是:1433。

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2009-03-03 01:40 by qiandy
          如果還是錯(cuò),那就可能是你代碼中的ip或端口錯(cuò)了,應(yīng)該不是用戶(hù)名和密碼問(wèn)題,因?yàn)橛脩?hù)名和密碼錯(cuò)了,不是報(bào)socket錯(cuò)誤

          # re: JDBC連接SQLServer時(shí)出現(xiàn)錯(cuò)誤Error establishing socket.的解決。  回復(fù)  更多評(píng)論   

          2010-01-11 10:03 by mida
          裝SqlServer真麻煩,前后裝了好多次還是忘。。

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 8, comments - 28, trackbacks - 0, articles - 0

          Copyright © 李鵬

          主站蜘蛛池模板: 静海县| 黔东| 广南县| 乐山市| 朔州市| 绥宁县| 纳雍县| 犍为县| 潢川县| 忻城县| 响水县| 盐亭县| 政和县| 北川| 故城县| 南召县| 鄂尔多斯市| 宁阳县| 汾阳市| 马关县| 含山县| 云南省| 慈溪市| 胶南市| 石河子市| 方正县| 贞丰县| 民丰县| 隆化县| 武城县| 稻城县| 拉萨市| 秀山| 成安县| 兴和县| 湾仔区| 庄浪县| 宝鸡市| 水富县| 衡山县| 张家港市|