使用JDBC连接SQL 2005

从微软网站上下载最新的JDBC2.0,解开压缩包以后你会在AUTH目录下面发现一个sqljdbc_auth.dll。如果这个文件不拷贝到system32目录下面那么   String connectionUrl = "jdbc:sqlserver://lab4I10//SQLEXPRESS;database=AdventureWorks;";如果拷贝到System32目录下面那么你可以采用   String connectionUrl = "jdbc:sqlserver://lab4I10//SQLEXPRESS;database=AdventureWorks;integratedSecurity=true;";
关于sql连接语句中的Integrated Security=SSPI
解决方法:
即:Security Support Provider Interface
设置Integrated Security为 True 的时候,连接语句前面的 UserID, PW 是不起作用的,即采用windows身份验证模式。
只有设置为 False 或省略该项的时候,才按照 UserID, PW 来连接。
Integrated Security 可以设置为: True, false, yes, no ,这四个的意思很明白了,还可以设置为:sspi ,相当于 True,建议用这个代替 True。

当你采用JDBC去连接SQL2005时发现有错误出现

代码:

  try {
   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
   String connectionUrl = "jdbc:sqlserver://lab4I10//SQLEXPRESS;database=AdventureWorks;integratedSecurity=true;";
   Connection con = DriverManager.getConnection(connectionUrl);
            Statement stmt=con.createStatement();
            ResultSet rs=stmt.executeQuery("select *  from  authors ");
            while (rs.next())
            {
              System.out.println(rs.getString(1));
            }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host lab4I10, named instance sqlexpress has failed. Error: java.net.SocketTimeoutException: Receive timed out. Please verify the server and instance names, check that no firewall is blocking UDP traffic to port 1434, and for SQL Server 2005 or later, verify that the SQL Server Browser service is running on the host.
 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:130)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:3090)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:475)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
 at java.sql.DriverManager.getConnection(Unknown Source)
 at java.sql.DriverManager.getConnection(Unknown Source)
 at HelloAccp.main(HelloAccp.java:13)
错误出现的原因是SQL Server Browser 服务 没有启动导致JDBC不能访问

SQL Server Browser:

启动一个 SQL Server 实例后,如果为 SQL Server 启用了 TCP/IP 或 VIA 协议,服务器将被分配一个 TCP/IP 端口。如果启用了命名管道协议,SQL Server 将侦听特定的命名管道。该特定实例将使用此端口(或“管道”)与客户端应用程序交换数据。在安装过程中,TCP 1433 端口和管道 /sql/query 将分配给默认实例,但服务器管理员可以随后使用 SQL Server 配置管理器进行更改。由于一个 SQL Server 实例只能使用一个端口或管道,因此将为命名实例(包括 SQL Express)分配不同的端口号和管道名称。默认情况下,如果两者都启用,命名实例和 SQL Express 将被配置为使用动态端口,即启动 SQL Server 时将分配一个可用端口。如果需要,可以为 SQL Server 实例分配特定端口。连接时,客户端可以指定所需端口,但是如果端口是动态分配的,端口号可能会在重新启动 SQL Server 时被更改,因此正确的端口号对于客户端来说是不确定的。

启动后,SQL Server 浏览器将启动并使用 UDP 1434 端口。SQL Server 浏览器将读取注册表,识别计算机上的所有 SQL Server 实例,并注明它们使用的端口和命名管道。当一台服务器具有两个或多个网卡时,SQL Server 浏览器会为 SQL Server 返回其遇到的第一个启用的端口。SQL Server 2005 和 SQL Server 浏览器支持 ipv6 和 ipv4。

如果 SQL Server 2000 和 SQL Server 2005 客户端请求 SQL Server 资源,客户端网络库将使用 1434 端口向服务器发送一条 UDP 消息。SQL Server 浏览器将用请求的实例的 TCP/IP 端口或命名管道做出响应。然后,客户端应用程序中的网络库将使用所需实例的端口或命名管道向服务器发送请求来完成连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值