executeQuery永远不会在NetBeans IDE中返回,但在java运行时仍然有效

时间:2012-08-21 16:08:24

标签: java sql-server netbeans jdbc ide

我正在使用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 Options属性设置为-Djava.library.path=C:\lib

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

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

1 个答案:

答案 0 :(得分:0)

我现在正在IDE中使用该项目。它原来是我正在使用的JDK的版本。用JDK1.7替换JDK1.6解决了这个问题,它现在按预期工作。