0
什么选项可以?为什么DataBase的隔离级别没有改变? 我有本地数据库,并连接到他们:setTransactionIsolation()不起作用
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”或从本地Web站点读取数据。它失败了。
查询执行冻结,直到事务不是从Java代码提交。
请帮帮我,这个算法有什么问题?
对于来自数据库的READ_UNCOMMITTED更改,我能做些什么?
对由Java程序启动的事务设置READ_UNCOMMITTED不会更改Visual Studio使用的事务的隔离级别。如果Visual Studio仍然使用READ_COMMITTED,那么查询冻结直到Java事务结束,这并不奇怪。 –
您翻开了我对隔离级别的理解。所以,我没有设置我的事务隔离,而是设置了我的事务的隔离渗透能力。谢谢,它的工作! –