我正在尝试连接到使用 sql auth 的 SQL Server 2008 R2 实例。没有引发异常(我正在捕获 SqlException),我的代码如下:
SQLServerDataSource ds = new SQLServerDataSource();
ds.setUser(dbUserID);
ds.setPassword(Password);
ds.setServerName(DBServer);
ds.setPortNumber(1433);
ds.setDatabaseName(dbName);
con = (SQLServerConnection) ds.getConnection();
Statement statement = con.createStatement();
resultSet = statement.executeQuery(SQL);
所有参数(用户名、密码等)100%正确。数据库正在运行等。查询是从现有表中简单的 select * 。使用后没有空对象,连接对象已设置等,但结果集有0行。
你知道我做错了什么吗?我正在使用Microsoft SQL Server JDBC Driver 3.0 .
谢谢
最佳答案
在这里做出一些假设:
您正在使用 SQL Auth,并且可以从命令行甚至 SQL Management Studio 使用 dbuserid 和密码参数进行连接。
您可以 telnet 到 1433 上的服务器,即确保不存在防火墙或端口转发问题。使用telnet 123.123.123.123 1433。您应该立即建立连接。如果没有,您需要解决这个问题。
我获取了您的代码,然后使用 JDBC 3 对我的一个 SQL 2008 数据库运行了它(请原谅代码又快又脏)。
import com.microsoft.sqlserver.jdbc.SQLServerConnection;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import java.sql.ResultSet;
import java.sql.Statement;
public class testdelete
{
private static void displayRow(String title, ResultSet rs) {
try {
System.out.println(title);
System.out.println("Sales ID - Pkts Sold");
while (rs.next()) {
System.out.println(rs.getString("SALES_ID") + " : " + rs.getString("Pkts"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
System.out.println("testing...");
String dbUserID = "sa";
String Password = "MYPWD";
String DBServer = "123.123.123.123";
String dbName = "MYDB";
SQLServerConnection con;
ResultSet rs;
String SQL = "select top 10 * from Sales";
SQLServerDataSource ds = new SQLServerDataSource();
ds.setUser(dbUserID);
ds.setPassword(Password);
ds.setServerName(DBServer);
ds.setPortNumber(1433);
ds.setDatabaseName(dbName);
try
{
con = (SQLServerConnection) ds.getConnection();
Statement statement = con.createStatement();
rs = statement.executeQuery(SQL);
displayRow("SALES", rs);
} catch (Exception e)
{
e.printStackTrace();
}
}
}
关于java - 无法使用我的选择查询从 SQL Server 获取数据(使用 jdbc 驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660023/