JDBC连接失败(java.lang.ClassNotFoundException)

时间:2012-09-26 12:37:39

标签: java eclipse sql-server-2008 jdbc

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

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 er​​ror ==>可能证明用户和用户没有任何问题。我创建的密码作为数据库的登录信息。
  • 我创建了一个Person表,其中Contact作为我的数据库中的一列。

附带问题:

  • 这究竟是什么意思:localhost:1433
  • 如何设置Eclipse以显示哪条线触发错误?非常感谢你!

4 个答案:

答案 0 :(得分:1)

  

这究竟是什么意思:localhost:1433

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

正如guido所提到的,你应该将sqljdbc.jar添加到你的类路径中。如果你正在使用eclipse,你可以通过右键单击项目来做到这一点 - >构建路径 - >添加外部档案 - >从您下载的目录中选择sqljdbc.jar。

您可以在此处查看我对类似问题的回复之一:Error:The TCP/IP connection to the host has failed. java.net.ConnectException: Connection refused: connect

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

两个说明: 错误说它找不到驱动程序(jar),请参阅“guido”评论

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

答案 3 :(得分:1)

主要问题:

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

  1. 附带问题: localhost是指您的计算机,这意味着您尝试连接到运行该程序的计算机上安装的SQL Server。
  2.   

    本地主机

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

    1. 问题: 使用

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

    2. 在控制台上打印有关例外的信息。