我的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.blogjava.net/lpeter/archive/2006/12.html
                                             14:44:38 10-22-2006

 



posted on 2006-12-22 14:47 java_蝈蝈 阅读(536) 评论(0)  编辑  收藏 所属分类: 数据库

只有注册用户登录后才能发表评论。


网站导航: