【问题标题】:executeQuery never returns in NetBeans IDE but works when run by javaexecuteQuery 在 NetBeans IDE 中永远不会返回,但在由 java 运行时可以工作
【发布时间】:2012-08-21 16:08:24
【问题描述】:

我正在使用 NetBeans IDE 7.0.1,并且正在使用 Microsoft 的 JDBC 测试 Microsoft SQL Server 连接。我有这个测试程序:

package testsql;
import java.sql.*;
public class TestSQL {

    public static void main(String[] args) {
        Statement stmt = null;
        ResultSet rs = null;
        Connection con = null;

        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String connectionURL = 
                    "jdbc:sqlserver://foo.bar.com:1433;" +
                    "databaseName=flintstone;integratedSecurity=true;";
            con = DriverManager.getConnection(connectionURL);
        } catch (SQLException e) {
            System.out.println("SQL Exception: " + e.toString());
        } catch (ClassNotFoundException e) {
            System.out.println("Class Not Found Exception: " + e.toString());
        }

        try {
            String SQL = con.nativeSQL("SELECT COUNT(*) AS Count FROM fred");
            stmt = con.createStatement();
            rs = stmt.executeQuery(SQL);
            while (rs.next()) {
                System.out.println("Count = " + rs.getString("Count"));
            }
        } catch (SQLException e) {
            System.out.println("SQL Exception: " + e.toString());
        }

    }
}

我将 NetBeans VM 选项属性设置为 -Djava.library.path=C:\lib

当我在 IDE 中运行代码时,程序在 executeQuery 处冻结并“永远”运行。不返回错误,也不引发超时。

但是,如果我构建包然后使用 java -Djava.library.path=C:\lib -jar TestSQL.jar 运行它,我会得到预期的返回数据:Count = 7349

【问题讨论】:

  • 你检查日志了吗?您也可以在调用前后保留一个 System.out.println() 方法,以确保它确实挂在那里。
  • 是的,在我发布这个问题之前,我检查了日志并在这里、那里和任何地方都使用了 println(),这就是我如何确认它是冻结的 executeQuery() 调用。

标签: java sql-server netbeans jdbc ide


【解决方案1】:

我的项目现在在 IDE 中运行。原来是我使用的 JDK 版本。用JDK1.7替换JDK1.6解决了这个问题,现在可以正常工作了。

【讨论】:

  • 您的 JDK 1.6 很可能是版本 1.6 更新 29,它有一个错误导致与 SQL Server 的连接冻结(顺便说一句,JDK 1.7 更新 1 或 2 也有同样的问题)。
  • 马克,你说的很对。它是 1.6 版更新 29。我现在使用的是 1.7 版更新 6。
猜你喜欢
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多