有什么选择?为什么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?
答案 0 :(得分:0)
通过这种方式,我设置了事务的隔离渗透能力,但没有隔离它。
要从另一个事务中获取数据,我必须更改另一个事务的隔离级别。