java - 如何在 Java 中设置 SQL Server 数据库连接超时和查询超时
问题描述
我正在尝试设置数据库连接超时和查询超时
这是我的代码
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
import java.util.concurrent.Executor;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import com.microsoft.sqlserver.jdbc.SQLServerStatement;
public class CreateConnection {
public static void main(String args[]) {
String url = "jdbc:sqlserver://localhost;databasename=test";
String username = "root";
String password = "root";
try {
SQLServerDataSource ds = new SQLServerDataSource();
ds.setUser("root");
ds.setPassword("root@123");
ds.setServerName("localhost");
ds.setPortNumber(1433);
ds.setDatabaseName("test");
ds.setQueryTimeout(1);
ds.setCancelQueryTimeout(1);
ds.setLoginTimeout(1); // Connection timeout is not working
Connection conn = ds.getConnection();
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
DriverManager.setLoginTimeout(1);
Connection conn = DriverManager.getConnection(url, username, password);
((SQLServerDataSource) conn).setCancelQueryTimeout(1);
if (conn != null) {
DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
System.out.println("Driver name: " + dm.getDriverName());
System.out.println("Driver version: " + dm.getDriverVersion());
System.out.println("Product name: " + dm.getDatabaseProductName());
System.out.println("Product version: " + dm.getDatabaseProductVersion());
}
Statement statement = conn.createStatement();
statement.setQueryTimeout(1);
((SQLServerStatement) statement).setCancelQueryTimeout(1);
System.out.println("get query stmnt----"+statement.getQueryTimeout());
System.out.println("get query ds---"+ds.getQueryTimeout());
System.out.println("get connection logintimeout ds---"+ds.getLoginTimeout());
System.out.println("get getCancelQueryTimeout ds----"+ds.getCancelQueryTimeout());
ResultSet rs = statement.executeQuery("SELECT * FROM emp");
while (rs.next()) {
System.out.print(rs.getString("PersonID") + " \t");
System.out.println(rs.getString("FirstName"));
}
} catch (Exception e) {
System.out.println(e);
}
}
}
解决方案
推荐阅读
- python - Python:查找所选数字的总和
- arrays - 使用 MongoDB 查找最相似的数组
- angular - 我在一个页面中有一个错误...说 NullInjectoErro,,,No Post Provider
- php - 如何使用 PHP 获取 MySQL 表中的行数?
- r - R Shiny:使用 lapply() 时侧边栏显示不正确
- sql - 用其他表中的数据覆盖表中的所有值
- javascript - Chrome:打印在最新版本中不起作用
- go - CRC - uint64 到两个字节?
- javascript - 如何用自定义变量替换 DJANGO 中 JAVASCRIPT 脚本生成的 Google Map Key
- sql-server - 与链接服务器的测试连接现在失败