-2

我刚刚从这里为 Sql Server (http://www.microsoft.com/en-us/download/details.aspx?id=11774) 安装了 JDBC 驱动程序,我测试了这个示例代码来测试连接:

http://msdn.microsoft.com/en-us/library/aa342339.aspx

我得到的错误似乎是一致的:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");


 java.lang.ClassNotFoundException:
 com.microsoft.sqlserver.jdbc.SQLServerDriver   
 at java.net.URLClassLoader$1.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)  
 at java.lang.ClassLoader.loadClass(Unknown Source)     
 at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)  
 at java.lang.ClassLoader.loadClass(Unknown Source)     
 at java.lang.Class.forName0(Native Method)

两个注意事项:

  • 如果我删除 try-finally 代码,我会得到 NO 错误 ==>,这可能证明我创建为数据库登录信息的用户和密码没有任何问题。
  • 我在我的数据库中创建了一个以联系人为列的 Person 表。

附带问题:

  • 这到底是什么意思:localhost:1433
  • 如何设置 Eclipse 以显示触发错误的行?非常感谢!
4

4 回答 4

1

这到底是什么意思:localhost:1433

localhost 是指您的机器。1433 是 SQL Server 公开 TCP/IP 接口以供外部客户端与之交互的默认端口号。

正如 guido 提到的,您应该将 sqljdbc.jar 添加到您的类路径中。如果您使用的是 eclipse,您可以通过右键单击项目 -> 构建路径 -> 添加外部存档 -> 从下载的目录中选择 sqljdbc.jar 来执行此操作。

您可能想在这里查看我对类似问题的回答之一:错误:与主机的 TCP/IP 连接失败。java.net.ConnectException:连接被拒绝:连接

于 2012-09-26T12:49:35.577 回答
1

看起来 JDBC 驱动程序不在正在运行的应用程序的类路径中。也许仅使用 JDK 和 JRE 命令行工具(javac 和 java)尝试您的示例,而不是在 IDE 中进行。

不知道为什么如果删除 try/catch 不会收到错误消息。应该报告未捕获的异常。如果您从命令行而不是 Eclipse 运行程序,您将看到报告的未捕获异常。

localhost:1433 是 JDBC URL 的一部分。localhost 表示数据库与正在运行的应用程序位于同一台机器上。端口 1433 是默认的 SQL Server TCP 端口。

不确定 Eclipse 问题。我主要使用Netbeans。

于 2012-09-26T12:49:40.303 回答
1

两个注意事项:错误说找不到驱动程序(jar),请参阅“guido”的评论

附带问题: localhost - 是本地计算机的网络名称,1433 - 是端口号 SQL 服务器等待连接 您的 catch 子句中有什么?e.PrintStackTrace();也应该显示行号

于 2012-09-26T12:52:42.567 回答
1

主要问题:

您是否将 sqljdbc4.jar 文件添加到您的类路径中?如果没有,java 不知道在哪里可以找到这些类。

  1. 附带问题: localhost 是指您的计算机,这意味着您尝试连接到安装在您运行程序的计算机上的 sql 服务器。

本地主机

由您的网络适配器解析为您自己的 ip。冒号 (:) 后面的数字是端口号。在计算机(或任何其他网络设备)上,可以有多个应用程序通过网络发送和接收数据。为此,应用程序在特定端口上侦听数据。SQL server 的标准端口是 1443

  1. 附带问题:使用

    try{ 可以抛出异常的代码 }catch(HandledException e){ e.printStacktrace(); }

在控制台上打印有关异常的信息。

于 2012-09-26T12:52:45.500 回答