gpt4 book ai didi

java - JDBC 连接挂起,没有来自 SQL Server 2008 r2 的响应

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:12 24 4
gpt4 key购买 nike

当连接到 SQL Server 2008(本地表达,生产中的完整服务器)时,这对我在本地机器上开发时工作正常,但它只是在生产中挂起。

代码如下:

package oata;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import sun.applet.Main;

public class Sql {

public static final String SQLDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
protected Connection conn = null;
private String ip = "";
private int port = 0;
private String databaseName = "";
private String db_userid = "";
private String db_password = "";

public void callDb(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
System.out.println("Initialising variables");
ip = args[0];
port = Integer.parseInt(args[1]);
databaseName = args[2];
db_userid = args[3];
db_password = args[4];
try{
Log logger = LogFactory.getLog(Main.class);
System.out.println("Opening logger...");
logger.debug("opening driver " + SQLDRIVER);
System.out.println("Creating connection instance...");
Class.forName(SQLDRIVER).newInstance();
System.out.println("Driver Manager.getConnection...");
conn = DriverManager.getConnection(getDBURL(), db_userid, db_password);
System.out.println("Connection prepare statement...");
PreparedStatement ps = conn.prepareStatement("select * from nstupersonal");
System.out.println("Executing query...");
ResultSet rs = ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString("StudentId"));
}
}catch(Exception e){
System.out.println(e.getMessage());
}

conn.close();
}


private String getDBURL(){
String url = "";
try {
url = "jdbc:sqlserver://" + ip
+":" + port +";databaseName="+
databaseName + ";user=" + db_userid + ";password="+db_password;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return url;
}

}

这就是运行的代码。在控制台中,它实际上只是卡在生产中。它似乎总是卡在 SQL Server 2008 上,但在我所有其他客户的生产中运行良好。简单地运行...

在 SQL Server 中的 1433 上启用了 TCP/IP,并在管理控制台中将允许远程连接设置为 true。

java -jar ipaddress port dbname 用户密码

有什么想法吗? SQL驱动程序错误吗?我正在使用 sqljdbc4.jar

生成的命令提示符是...

初始化变量正在打开记录器...Driver Manager.getConnection...

没有抛出异常

谢谢,

D

最佳答案

如果生产运行在 Java 6 Update 29 上,则升级到 Java 6 Update 30 或降级到 Java 6 update 27(?)。更新 29 包含 a bug SSL 无法正常工作并且与 SQL Server 的连接挂起。

关于java - JDBC 连接挂起,没有来自 SQL Server 2008 r2 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com