Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC:我可以检测查询是否正在运行而不是排队吗?_Java_Jdbc - Fatal编程技术网

Java JDBC:我可以检测查询是否正在运行而不是排队吗?

Java JDBC:我可以检测查询是否正在运行而不是排队吗?,java,jdbc,Java,Jdbc,当我执行statement.execute()时,有没有办法知道该语句是真的在执行还是在排队?或者,是否有方法执行statement.status(),并知道它是否正在运行/排队 这是为了检测耗时较长的查询并阻止同一连接上的其他查询 当我执行statement.execute()时,有没有办法知道该语句是真的在执行还是在排队 不在JDBCAPI中 或者,是否有方法执行statement.status()并知道它是否正在运行/排队 没有 这是为了检测耗时较长的查询并阻止同一连接上的其他查询 经典X

当我执行
statement.execute()
时,有没有办法知道该语句是真的在执行还是在排队?或者,是否有方法执行
statement.status()
,并知道它是否正在运行/排队

这是为了检测耗时较长的查询并阻止同一连接上的其他查询

当我执行statement.execute()时,有没有办法知道该语句是真的在执行还是在排队

不在JDBCAPI中

或者,是否有方法执行statement.status()并知道它是否正在运行/排队

没有

这是为了检测耗时较长的查询并阻止同一连接上的其他查询


经典XY问题。同一连接上不应该有任何其他并发查询。JDBC连接不是线程安全的。每个线程都应该有自己的连接。如果使用线程池,每个方法都应该有自己的连接。

JDBCAPI不能告诉您类似的事情。一些供应商驱动程序可能会这样做,但这似乎是您应该使用数据库的监视工具来完成的事情。首先,在多个线程之间共享连接的原因是什么?我不能真正使用特定于数据库的工具,因为我想支持多种类型的数据库。在现在的模型是每个用户(和许多用户)有一个连接之前,我对同一个连接进行查询。为每个人共享相同的连接池可能更有意义,但限制每个用户的连接。或者,我不应该在另一个查询完成之前启动查询,以保持其非并发。@Frenchguy为什么不创建一个新连接(在这里创建,我指的是从数据源/池获取)并执行查询?你有什么理由想对DB进行序列化访问吗?@FrenchGuy你应该对每个线程使用不同的连接,我已经说过了。我不知道你为什么一直回避这个问题。哦,是的,我的一个限制是只有一个连接可用(实际上就像
psql
命令行)