jdbc连接Oracle数据库后,实现增删改查功能,为什么增删改都没有问题,查询的时候,假设我用java语句新插入一条数据为1,再更改为2后,此时查看数据库,已更改为2,但是通过jdbc连接数据库后查询结果为1,个人认为是从缓存中查的答案,而不是真正从数据库中查的,这问题如何解决??
也就是说,数据库已经更改,但是查询的答案是我修改之前的答案,这问题是啥原因??如何解决,如果有可能的话,我给你传代码,帮我修改一下,谢谢!
jdbc连接Oracle数据库后,实现增删改查功能,为什么增删改都没有问题,查询的时候,假设我用java语句新插入一条数据为1,再更改为2后,此时查看数据库,已更改为2,但是通过jdbc连接数据库后查询结果为1,个人认为是从缓存中查的答案,而不是真正从数据库中查的,这问题如何解决??
也就是说,数据库已经更改,但是查询的答案是我修改之前的答案,这问题是啥原因??如何解决,如果有可能的话,我给你传代码,帮我修改一下,谢谢!
不是吧!怎么可能出现这样的情况!
你用的是Statement还是PreparedStatement?
我对JDBC用的还是比较熟!
我一般用PreparedStatement来做任何的增删改查
PreparedStatament ps = conn.getPreparedStatement();//活的连接对象!
假如我的数据存放在这里面String strsql = “你需要的增删改查”;
if(ps.execute()) //如果是查询那么java虚拟机JVM就会返回true,是增删改就返回false
{
ResultSet rs = new ps.getResultSet(); //获得查询的结果集
ResultSetMetadata meta = rs.getMetadata();
//不知道你知道不!上面这个类有你操作数据库表的所以信息
int cols = meta.getConlumnCount(); 获得操作表的列数
............
}else{
System.out.println("更新成功!");
}
具体的需要你给我代码我才能帮你看看你的代码哪里有些小问题!
初步个人判断!你的连接对象PreparedStatement没有及时关闭!
需要的话可以加QQ讨论。
如果你认为是缓存的话就调用一下flush(),可以试一下!
也许是查询方法有问题,可以把代码发给我看一下
ryan_lz@163.com
以前碰到过,我们的解决方法是在添加一条执行语句,把缓存中原来的挤出去变成需要的,不过最根本的问题是你的数据库的问题,我们那时候用的是access数据库,你可以试试用其它的数据库。