连接到Microsoft SQL Server时出现Java问题
如何从java代码连接到Microsoft SQL Server 代码: 错误:连接到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.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”)
(可选,驱动程序将自动加载)jdbc:sqlserver://LENOVO-PC\\SQLEXPRESS;databaseName=dbtest
(注意前缀更改和databaseName
->databaseName
。另请参见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");