我对jdbc和MySql有一个奇怪的问题,这就是我正在做的事情:我打开一个java.sql.Connection
,进行查询,我不关闭连接以便重用。然后我使用phpMyadmin
当我回到java时,使用相同的未关闭连接从同一个数据库中检索给我的旧结果不是我更新的结果。可能是什么问题?
我没有关闭的只是连接,其余的,preparedStatement,resultSet在每次查询后关闭。
答案 0 :(得分:1)
可能是您的连接未设置为auto commit
。
致电con.getCommit()
查看其状态。它返回boolean
。
如果返回false
,则可以在创建连接对象后将其设置为显式。
con.setAutoCommit( true );
OR
在所有DML操作之后,请致电con.commit()
答案 1 :(得分:0)
您的会话似乎不会与JDBC调用一起提交。这意味着在您提交之前,您的更改不会应用于数据库,并存储在本地会话中。
请提供一些示例代码以供进一步调查。
答案 2 :(得分:0)
尝试实施 JDBC事务,请参阅此示例
答案 3 :(得分:0)
我明白了。
java.sql.Connection c = ...;
c.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_COMMITTED);
这确保即使我们在交易期间选择,我们也能够选择由不同机器在某处更新的结果。