setTransactionIsolation()不起作用

时间:2015-07-04 20:21:09

标签: database jdbc transactions isolation-level


有什么选择?为什么DataBase的隔离级别不会改变? 我有本地DataBase并通过以下方式连接到它们:

connect = DriverManager.getConnection("jdbc:sqlserver://"
                        + "localhost;IntegratedSecurity=True;"
                        + "databaseName=" + TestsConstants.DB_NAME + "; ");

然后我使用此方法设置TRANSACTION_READ_UNCOMMITTED级别:

    public static void setTransaction() {
    try {
        connect.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
        connect.setAutoCommit(false);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

我重新检查隔离级别:

System.out.println(connect.getTransactionIsolation());

并且收到1.那是对的 然后我在我的数据库中插入一些数据,并在我的Java代码中停止在BreackPoint上。
交易尚未结束。

现在我尝试从其他进程使用SELECT运算符读取数据,例如来自" Microsoft SQL Server Management Studio"或者来自" Micosoft Visual Studio"或者来自我当地的网站。它失败了。
查询执行冻结,直到Transaction不从Java代码提交。

请帮帮我,这个算法有什么问题?
对于READ_UNCOMMITTED,我该如何更改DB?

1 个答案:

答案 0 :(得分:0)

通过这种方式,我设置了事务的隔离渗透能力,但没有隔离它。
要从另一个事务中获取数据,我必须更改另一个事务的隔离级别。