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

Java 如何在MS SQL Server 2008 Express中使用MS JDBC驱动程序?,java,sql-server,jdbc,Java,Sql Server,Jdbc,我的配置: WindowsXPSP3 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:

我的配置:

  • WindowsXPSP3
  • 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
同样的结果。
有什么帮助吗?

您可以尝试以下方法。在我的情况下效果很好:

  • 下载当前的
  • 将jtds-x.x.x.jar放在类路径中
  • 将ntlmauth.dll复制到windows/system32。根据硬件x86、x64选择dll
  • 连接url为:“jdbc:jtds:sqlserver://localhost:1433/YourDB,则不必提供用户名和密码

  • 希望有帮助。

    您的URL错误

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

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

    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驱动程序的发行说明中。

    如果您的
    databaseName
    值正确,请使用以下命令:
    drivermanager.getconnection(“JDBC:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;“”

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

    类文件应该位于类路径中

    右键单击项目名称-->属性-->Java生成路径--> 库-->添加外部jar

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

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

    希望这有帮助

  • 从Microsoft的网站下载最新的JDBC驱动程序(即
    sqljdbc4.0
  • 按如下方式编写程序:

    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();
        } 
    }
    
  • 编译程序并设置jar类路径,即:
    set classpath=C:\jdbc\sqljdbc4.jar;
    如果下载和解压缩后已将
    jar
    文件保存在
    C:\jdbc

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

    URL:jdbc:sqlserver://[serverName][\instanceName][:端口号][;属性=值]


    注意:反斜杠

    他们问的是如何使用MS驱动程序,而不是JTDS驱动程序。对不起(-1)问题不清楚说明他必须使用MS驱动程序。也许提问者不知道jTDS。一般来说,jTDS工作得更好,所以可能不是一个直接的解决方案,而是一个很好的替代方案。谢谢你们否决了一个7年前的答案。你们是冠军。是的,这个答案中的信息现在已经过时了。我建议开发人员转到MS网站并获取最新的驱动程序。同时阅读发行说明以验证类名和URL。目前它们没有更改,但检查是有意义的。添加此
    microsoft:
    会给我:
    java.sql.SQLException:找不到适合jdbc的驱动程序:microsoft:sqlserver://……
    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();
        } 
    }