Java JDBC->SQL Server
我正在尝试让Java应用程序与Microsoft SQL Server数据库对话 我从Microsoft网站下载了sqljdbc_4.0.2206.100_enu.tar.gz,因为它不在普通Maven风格的Java库存储库中托管。 我在本地Maven存储库中手动安装。 我使用以下超级简单的测试代码: 我可以访问SQLWorkbenchJ中的数据库,这是一个基于Java的SQL查询工具,可以对这些SQL命令获得正常、即时的响应。 服务器是Windows7上的SQLServer2005。 客户端是Java7。我也尝试过Java8,没有什么不同Java JDBC->SQL Server,java,sql-server,jdbc,Java,Sql Server,Jdbc,我正在尝试让Java应用程序与Microsoft SQL Server数据库对话 我从Microsoft网站下载了sqljdbc_4.0.2206.100_enu.tar.gz,因为它不在普通Maven风格的Java库存储库中托管。 我在本地Maven存储库中手动安装。 我使用以下超级简单的测试代码: 我可以访问SQLWorkbenchJ中的数据库,这是一个基于Java的SQL查询工具,可以对这些SQL命令获得正常、即时的响应。 服务器是Windows7上的SQLServer2005。 客户端是
public static void superSimpleJdbcTest(String jdbcUrl, String user, String password) throws SQLException {
try (Connection dbConnection = DriverManager.getConnection(jdbcUrl, user, password)) {
System.out.println("opened connection");
try (Statement statement = dbConnection.createStatement()) {
System.out.println("created statement");
System.out.println("executing create table command...");
statement.execute("create table something (id int primary key, name varchar(100))");
System.out.println("completed create table command");
System.out.println("executing insert command...");
statement.executeUpdate("insert into something (id, name) values (1, 'Brian')");
System.out.println("insert command completed");
}
}
}
它偶尔工作,但通常挂起CREATETABLE命令。如果我对此进行注释,它将挂起在insert命令上。我无法想象到底出了什么问题。当SQLWorkbenchJ应用程序运行时,我的简单Java测试应用程序会打开连接并永远挂起任何SQL命令,而不会出现任何错误 我一退出SQLWorkbenchJ应用程序,我的简单Java测试应用程序就如预期的那样完美运行。这真的很奇怪,我终于找到了答案
我改用RazorSQL作为SQL控制台,似乎没有任何类似的问题。我已经成功地使用了和Microsoft驱动程序JDBC4。我没有尝试过SQLWorkbenchJ,因为我主要用于测试驱动程序。此实例中挂起的定义是什么?我等待了几分钟,statement.execute或statement.executeUpdate命令从未返回。这些都是琐碎的命令。当我在其他数据库工具上运行相同的命令时,服务器会立即响应。通常是ok,但这些驱动程序/版本最初是为Java 5/6编写的,您尝试使用7或8检查数据库日志。如果您的代码正在连接,但未从数据库获得响应,则很可能数据库不满意,并在日志条目中表示不满意。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-好建议。谢谢