如何从Java代码连接到Microsoft SQL Server?
代码:
public class insert {
public static void main(String[] args) {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://LENOVO-PC\\SQLEXPRESS;DatabaseName=dbtest";
Connection connection = DriverManager.getConnection(url , "sa" , "Aa123456");
Statement st = connection.createStatement();
st.executeUpdate("INSERT INTO [dbo].[table] VALUES ('come')");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
System.exit(1);
}
catch (SQLException e)
{
e.printStackTrace();
System.exit(2);
}
}
}
错误:
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已添加到引用的库中。
答案 0 :(得分:1)
您要加载的类名com.microsoft.jdbc.sqlserver.SQLServerDriver
来自非常旧的Microsoft SQL Server 2000版本驱动程序。在2005年左右,Microsoft将其更改为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
。另请参见Building the Connection URL。使用最新的JDBC驱动程序,不必在简单的Java应用程序中显式加载驱动程序类,因此除了步骤1之外,您还可以删除Class.forName
行。
还要确保您使用的是最新版本的驱动程序,请参见mssql-jdbc project on GitHub(在撰写本文时的latest stable version为7.0.0)。
答案 1 :(得分:0)
更正驱动程序类名称:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");