我有一个使用JTDS连接到SQL Server的应用程序。我需要更改数据库,并想在重新配置应用程序之前先测试连接字符串。我是SQL Server DBA,不是Java开发人员!
这是我的测试代码:

// Import the SQL Server JDBC Driver classes
import java.sql.*;
class Example
{
   public static void main(String args[])
   {
   try
   {
        // Build the connection string, and get a connection
        System.out.println("1.");
        System.out.println("2.");
        String connectionUrl = "jdbc:jtds:sqlserver://UK-SB-Server:53569;DatabaseName=helpdesk;user=helpdesk;password=MyPwd;Tds=8.0;PrepareSql=3;XaEmulation=false";
        System.out.println("3.");
        Connection con = DriverManager.getConnection(connectionUrl);
        System.out.println("Connected.");

        // Create and execute an SQL statement that returns some data.
        String SQL = "SELECT * from dbo.AllowedValues";
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(SQL);

        // Iterate through the data in the result set and display it.
        while (rs.next())
        {
           System.out.println(rs.getString(1) + " " + rs.getString(2));
        }
   }
   catch(Exception e)
   {
        System.out.println("Error - " + e.getMessage());
        System.exit(0);
   }
}
}


我用它编译:

C:\Progra~1\Java\jdk1.6.0_45\bin\javac C:\JavaTest\example.java


我运行它:

C:\Progra~1\Java\jdk1.6.0_45\bin\java -classpath C:\JavaTest Example


jtds-1.2.jar和Example.class都在C:\ JavaTest中

我收到以下错误:

1.
2.
3.
Error - No suitable driver found for jdbc:jtds:sqlserver://UK-SB-Server:53569;DatabaseName=helpdesk;user=helpdesk;password=MyPwd;Tds=8.0;PrepareSql=3;XaEmulation=false


我已阅读有关是否需要的矛盾帖子

Class.forName("net.sourceforge.jtds.jdbc.Driver");


或不。如果我将线放在println("1.")println("2.")之间,它只会更早失败

1.
Error - net.sourceforge.jtds.jdbc.Driver


我可能缺少明显的东西,但是请帮助我解决此问题。

最佳答案

您似乎面临两个问题:

问题1。jTDS1.2似乎已经足够老了,您实际上确实需要调用

Class.forName("net.sourceforge.jtds.jdbc.Driver");


在尝试建立连接之前。

问题2。当您指定类路径时,您需要显式包括jTDS jar文件。也就是说,这行不通...

C:\JavaTest>"\Program Files\Java\jdk1.6.0_45\bin\java.exe" -cp C:/JavaTest Example
1.
Error - net.sourceforge.jtds.jdbc.Driver


...但这对我有用:

C:\JavaTest>"\Program Files\Java\jdk1.6.0_45\bin\java.exe" -cp C:/JavaTest;C:/JavaTest/jtds-1.2.jar Example
1.
2.
3.
Connected.
...

10-08 18:14