有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在MS SQL Server 2008 Express中使用MS JDBC驱动程序?

我的配置:

  • 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

我还尝试了以下URL:

localhost:1433/SQLEXPRESS2008

localhost/SQLEXPRESS2008

localhost

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


共 (3) 个答案

  1. # 1 楼答案

    你可以试试下面的方法。对我来说很好:

    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,您不必提供用户名和密码

    希望有帮助

  2. # 2 楼答案

    你的网址错了

    我不知道你说的“JDBC 2005”是什么意思。当我浏览微软网站时,我发现了一个叫做Microsoft SQL Server JDBC Driver 2.0的东西你会想要它的——它包括很多修复和一些性能改进[编辑:你可能需要最新的驱动程序。截至2012年3月,微软最新的JDBC驱动程序是JDBC 4.0]

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

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

    看起来你的类名是正确的,但是URL是错误的

    在最初发布JDBC驱动程序后,微软更改了类名和URL。您使用的URL与Microsoft的原始JDBC驱动程序一致,微软称之为“SQL Server 2000版本”。但那个驱动程序使用了不同的类名

    对于所有后续的驱动程序,URL更改为我这里的表单

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

  3. # 3 楼答案

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

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

    Right Click Project Name --> Properties --> Java Build Path --> Libraries --> Add External Jars

    正如@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");
       }
    }
    

    希望这有帮助