Java JDBC JTDS 测试连接字符串

Java JDBC JTDS test connection string

我有一个使用 JTDS 连接到 SQL 服务器的应用程序。我需要更改数据库并希望在重新配置应用程序之前先测试连接字符串。我是 SQL 服务器 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

我可能遗漏了一些明显的东西,但请帮我解决这个问题。

让我们分解步骤,运行 遵循 cmd 中的命令:

cd C:\JavaTest
set path=C:\Progra~1\Java\jdk1.6.0_45\bin
javac example.java
java -cp .;jtds-1.2.jar -Djdbc.drivers=net.sourceforge.jtds.jdbc.Driver Example

最后一行将手动加载驱动程序,因此无需更改代码。

问题是您需要在连接到数据库之前注册驱动程序。

I've read conflicting posts as to whether I need

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

是的,但是你必须把它放在第

行之前

Connection con = DriverManager.getConnection(connectionUrl);

您似乎面临两个问题:

问题 1. 看来 jTDS 1.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.
...