连接到Microsoft SQL Server时出现Java问题

连接到Microsoft SQL Server时出现Java问题,java,sql-server,jdbc,Java,Sql Server,Jdbc,如何从java代码连接到Microsoft SQL Server 代码: 错误: java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppCl

如何从java代码连接到Microsoft SQL Server

代码:

错误:

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at java.net.URLClassLoader.findClass(Unknown Source)
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)
    at java.lang.Class.forName(Unknown Source)
    at insert.main(insert.java:12)
Microsoft SQL Server名称为:LENOVO-PC\SQLEXPRESS
并且sqljdbc.jar已添加到引用的库中。

请更正驱动程序类名:

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

您试图加载的类名
com.microsoft.jdbc.sqlserver.SQLServerDriver
来自非常旧的microsoft SQL Server 2000版本的驱动程序。大约在2005年,微软将其更改为
com.Microsoft.sqlserver.jdbc.SQLServerDriver
(注意
jdbc
sqlserver
之间的切换顺序)。当时,他们还将驱动程序URL前缀从
jdbc:microsoft:sqlserver:
更改为
jdbc:sqlserver:

换句话说,您需要:

  • 使用
    Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”)
    (可选,驱动程序将自动加载)
  • 将URL更改为
    jdbc:sqlserver://LENOVO-PC\\SQLEXPRESS;databaseName=dbtest
    (注意前缀更改和
    databaseName
    ->
    databaseName
    。另请参见
  • 对于最新的JDBC驱动程序,不需要在简单的Java应用程序中显式加载驱动程序类,因此也可以删除
    class.forName
    行而不是步骤1


    另外,请确保您使用的是最新版本的驱动程序,请参阅(撰写本文时为7.0.0).

    ypu在您的类路径中有驱动程序库吗?这本身是不够的,因为URL也是错误的……而且还使用了驱动程序本身的一个版本。@GordThompson是真的,但OP提到他们正在使用
    sqljdbc.jar
    这一事实表明他们至少使用了比Microsoft SQL Server 2000 JDBC驱动程序更新的版本(哪个iirc有
    sqlserver.jar
    +可能还有其他依赖项)。我在回答中添加了一个明确的提醒。我还按照以下步骤启用端口1433:开始->所有程序->Microsoft SQL Server 2012->配置工具->单击SQL Server配置管理器->展开SQL Server网络配置->协议->启用TCP/IP R右键双击TCP/IP,进入IP地址点击,将端口1433置于TCP端口下。
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");