我有一个使用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.
...