一次在重裝系統并重新搭建 JAVA 運行環境后,為了測試運行環境是否搭建好,寫了一個非常簡單的 JDBC 程序測試數據庫連接。

          IDE Eclipse3.2

          DB SQLServer2000

          Driver MS 的官方驅動: msbase.jar mssqlserver.jar msutil.jar

          源程序如下:

          文件名: SqlServerTest.java

          package test;

           

          import java.sql.*;

           

          /**

            * @author lpeter SQLServer 連接測試

            */

          public class SqlServerTest {

              // 驅動類

              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" ;

               // 用戶名

              static String username = "peter" ;

              // 待執行的 SQL 語句

              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( " 驅動類沒有找到 ." );

                     e.printStackTrace();

                 } catch (SQLException e) {

                     e.printStackTrace();

                 } finally {

                     if (rs != null ) // 結果集沒有關閉時關閉結果集

                        try {

                            rs.close();

                        } catch (SQLException e) {

                            e.printStackTrace();

                        }

                     if (pstmt != null ) // 發送對象沒有關閉時關閉發送對象

                        try {

                            pstmt.close();

                        } catch (SQLException e) {

                            e.printStackTrace();

                        }

                     if (conn != null )  // 連接沒有關閉時關閉連接

                        try {

                            conn.close();

                        } catch (SQLException e) {

                            e.printStackTrace();

                        }

                 }

           

              }

          }

          執行這段程序時,出現錯誤:

          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 )

           

          出現了這個錯誤,我馬上想到連接字符串有問題??稍诰W上找了好幾個版本都是這樣。

          后來由于某種偶然原因,我知道了 SQLServer 可以設置查看端口號。步驟如下:

          1.  打開企業管理器,依次在控制臺根目錄 ->Microsoft SQL Servers->SQL Server 組,列出一部分數據庫服務器。

          2.  右擊我們要連接的數據庫服務器,選擇屬性,在常規選項卡點擊網絡配置彈出新窗口。

          3.  在啟用的協議區域我們選擇 TCP/IP ,點擊屬性按鈕,彈出新窗口。在這個窗口有網絡協議默認值設置,我在這里看到我的默認端口是: 4067 。因面在使用 1433 連接數據庫時出錯。

           

          把端口號修改為 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" ;

          后,執行程序,輸出: OK too.

           

          測試連接成功。

          Feedback

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          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("數據庫驅動程序注冊成功!");
          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("數據庫連接成功");
          } catch (Exception e) {
          e.printStackTrace();
          System.out.println("數據庫連接失敗");
          }

          }
          }



          數據庫驅動程序注冊成功!
          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)
          數據庫連接失敗

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2007-12-07 00:22 by Angela
          端口號是1433,但還是連接不上
          不知道怎么搞,請高手指點,謝謝!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。[未登錄]  回復  更多評論   

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

          可以先查看端口號是否打開
          在CMD中輸入命令: netstat 看有沒有1433

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。[未登錄]  回復  更多評論   

          2008-01-04 15:55 by rock
          你的系統是XP第二版吧? XP第二版不支持JDBC連接 我一般使用ODBC 我用JDBC時也是出現你那個錯誤

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。[未登錄]  回復  更多評論   

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

          打上sp4補丁試試

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-01-17 14:56 by Angela
          早解決了啊!謝謝啊!
          是sql沒有打補丁!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。[未登錄]  回復  更多評論   

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

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-03-06 17:20 by 思春帖調查員
          樓上的.
          你給sqlserver 打個sp3補丁就行了
          否則windows 2003下即使端口設置正確也會出現以上錯誤.

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

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

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-04-26 16:11 by xiaolong
          我 補丁 打了 驅動換了 端口 改了 環境 變量設置了 可是 錯誤依然!!
          后來 我用 CMD 命令 NETSTAT 查 1433 的 端口 有沒有 打開 可是 居然沒有 我把 SQL的企業管理器 重起 依然如故 我快崩潰了!!! 哪位大哥 能不能 解決一下!!!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。[未登錄]  回復  更多評論   

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

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-09-12 23:26 by hokel
          在本地服務器的網絡配置的TCP\IP的屬性值是1433,但是在cmd中以netstat查看端口號卻沒有1433,使得JDBC連接SQLServer時出現錯誤Error establishing socket.無法解決請大哥指點指點!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-11-19 15:58 by longlongago
          我也是上面的那個問題.
          我 補丁 打了 驅動換了 端口 改了 環境 變量設置了 可是 錯誤依然!!
          我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然沒有沒有打開
          我把 SQL的企業管理器 重起 依然如故!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-12-03 17:42 by fxf
          是應該升級到sqlsp3包

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2008-12-06 00:04 by nimama
          我也是上面的那個問題.
          我 補丁 打了 驅動換了 端口 改了 環境 變量設置了 可是 錯誤依然!!
          我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然沒有沒有打開
          我把 SQL的企業管理器 重起 依然如故!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2009-01-17 14:28 by liuchuan
          @Angela
          我的系統是Windows Server 2000系統、數據庫是SQLServer 2000的,打的是SP4的補丁,連接數據庫時有時候能連接上,有時候連接不上,報的錯誤也是Error establishing socket。有沒有知道的,幫忙解決一下吧!

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2009-03-03 01:35 by qiandy
          用 CMD 命令NETSTAT查1433(這是默認的端口,可能被占用,你可以重新設一個新的端口)的端口可是居然沒有沒有打開,先看看你的服務器有沒有打開,如果都大開了那就說明你沒有裝sp3或sp4的補丁.

          還有一個方法看你是不是要打補丁,那就是看看你的版本號:
          可以用如下的方式查看MSSQL的版本:
          打開企業管理器-〉工具-〉SQL查詢分析器-〉幫助-〉關于
          查看MSSQL的詳細版本號
          如果 是 8.00.194 就是還沒打補丁
          8.00.760 就是SP3
          8.00.2039 就是SP4
          如果你的版本號是對的,但NETSTAT查1433沒有,那可能你的1433端口被占了,換一個端口應該就可以了.
          換端口的方法是:1. 打開企業管理器,依次在控制臺根目錄 ->Microsoft SQL Servers->SQL Server 組,列出一部分數據庫服務器。
          2. 右擊我們要連接的數據庫服務器,選擇屬性,在常規選項卡點擊網絡配置彈出新窗口。
          3. 在啟用的協議區域我們選擇 TCP/IP ,點擊屬性按鈕,彈出新窗口。在這個窗口有網絡協議默認值設置,一般默認端口是:1433。

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

          2009-03-03 01:40 by qiandy
          如果還是錯,那就可能是你代碼中的ip或端口錯了,應該不是用戶名和密碼問題,因為用戶名和密碼錯了,不是報socket錯誤

          # re: JDBC連接SQLServer時出現錯誤Error establishing socket.的解決。  回復  更多評論   

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

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

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

          Copyright © 李鵬

          主站蜘蛛池模板: 阿坝| 潞西市| 仁化县| 冷水江市| 鄂尔多斯市| 巴彦淖尔市| 同心县| 马公市| 新沂市| 安徽省| 古田县| 新巴尔虎右旗| 星子县| 新建县| 嵊州市| 那曲县| 城口县| 高淳县| 渝中区| 瑞昌市| 永登县| 莲花县| 阳东县| 颍上县| 简阳市| 无为县| 佛冈县| 南和县| 永康市| 邓州市| 马关县| 清原| 体育| 那曲县| 板桥市| 西畴县| 枣庄市| 三明市| 芦溪县| 盘山县| 和田市|