与Microsoft SQL Server的连接内出现Java问题

时间:2018-09-06 01:18:39

标签: java sql-server jdbc

如何从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已添加到引用的库中。

2 个答案:

答案 0 :(得分:1)

您要加载的类名com.microsoft.jdbc.sqlserver.SQLServerDriver来自非常旧的Microsoft SQL Server 2000版本驱动程序。在2005年左右,Microsoft将其更改为com.microsoft.sqlserver.jdbc.SQLServerDriver(请注意,在jdbcsqlserver之间进行了切换)。那时,他们还将驱动程序URL前缀从jdbc:microsoft:sqlserver:更改为jdbc:sqlserver:

换句话说,您需要:

  1. 使用Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")(可选,驱动程序将自动加载)
  2. 将您的URL更改为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");
相关问题