我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks

          ?

          一次在重裝系統并重新搭建 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 )

          ?

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

          后來由于某種偶然原因,我知道了 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.

          ?

          測試連接成功。


          引自:http://www.aygfsteel.com/lpeter/archive/2006/12.html
                                                       14:44:38 10-22-2006

          ?



          posted on 2006-12-22 14:47 java_蟈蟈 閱讀(545) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 武乡县| 三台县| 霍城县| 吴川市| 甘南县| 银川市| 格尔木市| 正镶白旗| 民勤县| 博湖县| 交城县| 永年县| 德令哈市| 龙州县| 浦东新区| 聂拉木县| 安陆市| 江阴市| 中西区| 平定县| 咸宁市| 玉屏| 临海市| 汕尾市| 台中县| 门头沟区| 嵊州市| 灌阳县| 台山市| 平乡县| 读书| 斗六市| 花莲县| 乐东| 合山市| 青岛市| 靖安县| 三河市| 册亨县| 徐汇区| 阿尔山市|