首页 > 解决方案 > 使用java取消jdbc SQL查询

问题描述

我有两个 Oracle 数据库实例,都是 11g 版本。

我编写了一个简单的 java 代码来执行查询,然后在它运行时取消它。这是我的代码。

Connection con=DriverManager.getConnection(
"jdbc:oracle:thin:@mydb1:1521:orcl","username","***");

Statement stmt=con.createStatement();

new Thread(new Runnable() {
    private Statement tstmt;
    public Runnable init(Statement tstmt) {
        this.tstmt = tstmt;
        return this;
    }
    @Override
    public void run() {
        try{
            System.out.println("Running the thread....");
            Thread.sleep(1500);
            tstmt.cancel();
        }
        catch(InterruptedException e)
        {
            System.out.println("InterruptedException...");
        }
        catch(SQLException e)
        {
            System.out.println("SQLException...");
        }
    }
}.init(stmt)).start();

我基本上是在查询运行时调用 statement.cancel 并且我想在异常中处理它。当我对 db1 运行它时,会触发 SQLException。但是它不会发生在 db2 上。

我无法弄清楚为什么这种行为差异。是否有可以在数据库中启用/禁用的取消查询设置?

标签: javajdbcoracle11goracle-sqldeveloper

解决方案


推荐阅读