【问题标题】:How can I use the MS JDBC driver with MS SQL Server 2008 Express?如何将 MS JDBC 驱动程序与 MS SQL Server 2008 Express 一起使用?
【发布时间】:2010-10-07 03:08:22
【问题描述】:

我的配置:

  • Windows XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express,通过端口 1433 上的 tcp/ip 公开
  • 类路径中的sqljdbc.jar

我试过了:

try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433/SQLEXPRESS2008;databaseName=Test;selectMethod=cursor", "sa", "");
}
catch (Exception e) {
    e.printStackTrace();
}

但它总是抛出异常:

java.sql.SQLException: No suitable driver

我还尝试了以下网址:

localhost:1433/SQLEXPRESS2008

localhost/SQLEXPRESS2008

localhost

同样的结果。 有什么帮助吗?

【问题讨论】:

    标签: java sql-server jdbc


    【解决方案1】:

    您的网址有误。

    我不知道您所说的“JDBC 2005”是什么意思。当我查看微软网站时,我发现了一个名为Microsoft SQL Server JDBC Driver 2.0 的东西。 你会想要那个 - 它包括许多修复和一些性能改进。 [编辑:你可能会想要最新的驱动程序。截至 2012 年 3 月,来自 Microsoft 的最新 JDBC 驱动程序是 JDBC 4.0]

    查看发行说明。对于此驱动程序,您需要:

    URL:  jdbc:sqlserver://server:port;DatabaseName=dbname
    Class name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    

    您的类名似乎正确,但 URL 错误。

    Microsoft 在首次发布 JDBC 驱动程序后更改了类名和 URL。您使用的 URL 与 Microsoft 的原始 JDBC 驱动程序一起使用,MS 将其称为“SQL Server 2000 版本”。但是该驱动程序使用不同的类名。

    对于所有后续驱动程序,URL 更改为我这里的形式。

    这在 JDBC 驱动程序的发行说明中。

    【讨论】:

    • 是的,这个答案中的信息现在已经过时了。我建议开发人员访问 MS 网站并获取最新的驱动程序。另请阅读发行说明以验证类名和 URL。目前它们没有变化,但检查一下是有意义的。
    【解决方案2】:
    1. 从 Microsoft 网站下载最新的 JDBC 驱动程序(即sqljdbc4.0)
    2. 编写程序如下:

      import java.sql.*;
      class testmssql
      {
          public static void main(String args[]) throws Exception
          {
              Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
              Connection      con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;
                      databaseName=chapter16","sa","123");//repalce your databse name and user name
                  Statement st=con.createStatement();
              ResultSet rs=st.executeQuery("Select * from login");//replace your table name
              while(rs.next())
              {
                  String s1=rs.getString(1);
                  String s2=rs.getString(2);
                  System.out.println("UserID:"+s1+"Password:"+s2);
              }
              con.close();
          } 
      }
      
    3. 编译程序并设置jar类路径即:set classpath=C:\jdbc\sqljdbc4.jar;.;如果您下载并解压后将jar文件保存在C:\jdbc中。

    4. 运行程序并确保您的 TCP/IP 服务已启用。如果未启用,请按照以下步骤操作:
      1. 转到开始 -> 所有程序 -> Microsoft SQL Server 2008 -> 配置工具 -> SQL Server 配置管理器
      2. 扩展 Sql Server 网络配置:选择您的 MS SQL Server 实例,即。 MSQSLSERVER 并启用 TCP/IP。
      3. 重新启动您的 MS SQL Server 实例。这也可以从 MS SQL Server 实例根级别的 Microsoft SQL Server Management Studio 的右键菜单中完成

    【讨论】:

      【解决方案3】:

      如果您的 databaseName 值正确,请使用:DriverManger.getconnection("jdbc:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;")

      【讨论】:

      • 添加这个microsoft:给我:java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver:// ...
      【解决方案4】:

      最新的 JDBC MSSQL 连接驱动可以在 JDBC 4.0

      类文件应该在类路径中。如果您使用的是 eclipse,您可以通过执行以下操作轻松地做到这一点 -->

      右键项目名称-->属性-->Java构建路径--> 库 --> 添加外部罐子

      正如@Cheeso 已经指出的,正确的访问方式是 jdbc:sqlserver://server:port;DatabaseName=dbname

      同时请找到一个用于访问 MSSQL DB 的示例类(在我的例子中是 2008 年)。

      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.ResultSet;
      import java.sql.Statement;
      
      public class ConnectMSSQLServer
      {
         public void dbConnect(String db_connect_string,
                  String db_userid,
                  String db_password)
         {
            try {
               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
               Connection conn = DriverManager.getConnection(db_connect_string,
                        db_userid, db_password);
               System.out.println("connected");
               Statement statement = conn.createStatement();
               String queryString = "select * from SampleTable";
               ResultSet rs = statement.executeQuery(queryString);
               while (rs.next()) {
                  System.out.println(rs.getString(1));
               }
               conn.close();
            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      
         public static void main(String[] args)
         {
            ConnectMSSQLServer connServer = new ConnectMSSQLServer();
            connServer.dbConnect("jdbc:sqlserver://xx.xx.xx.xxxx:1433;databaseName=MyDBName", "DB_USER","DB_PASSWORD");
         }
      }
      

      希望这会有所帮助。

      【讨论】:

        【解决方案5】:

        命名实例?

        网址:jdbc:sqlserver://[serverName][\instanceName][:portNumber][;property=value]

        注意:反斜杠

        【讨论】:

          【解决方案6】:

          您可以尝试以下方法。在我的情况下工作正常:

          1. 下载当前jTDS JDBC Driver
          2. 将 jtds-x.x.x.jar 放入您的类路径中。
          3. 将 ntlmauth.dll 复制到 windows/system32。根据您的硬件 x86、x64 选择 dll...
          4. 连接url为:'jdbc:jtds:sqlserver://localhost:1433/YourDB',用户名和密码不用输入。

          希望对您有所帮助。

          【讨论】:

          • 他们问的是如何使用 MS 驱动程序,而不是 JTDS 驱动程序。抱歉(-1)
          • 问题不明确指出他必须使用 MS 驱动程序。也许提问者不知道 jTDS。一般来说,众所周知 jTDS 工作得更好,所以可能不是直接的解决方案,而是一个很好的替代方案。
          • 感谢您对 7 年前的答案投反对票。你们是冠军。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-28
          • 1970-01-01
          • 2011-07-14
          • 1970-01-01
          • 2011-08-07
          • 2012-07-21
          相关资源
          最近更新 更多