oracle插入后查不到,Oracle表刚插入数据,但是在MyEclipse中却查不到(代码完全正确)...
最近在做項(xiàng)目的時(shí)候發(fā)現(xiàn)了一個(gè)有趣的問(wèn)題:
在plsqldeveloper中打開(kāi)一個(gè)sql會(huì)話窗口,然后 插入一條數(shù)據(jù)(或者刪、改操作),但是在MyEclipse中用代碼卻查詢不到,而且數(shù)據(jù)已經(jīng)插入進(jìn)去了,這是為什么呢?
1.用plsqldeveloper插入數(shù)據(jù)
這里有張表mydept,然后我向其中插入一條數(shù)據(jù),查詢了一下,插入成功,沒(méi)問(wèn)題
2.查詢數(shù)據(jù)
打開(kāi)MyEclipse,我這里使用了Hibernate查詢的數(shù)據(jù),但是沒(méi)有查出來(lái)
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
Criteria criteria=session.createCriteria(Dept.class);
List list=criteria.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
tx.commit();
HibernateUtil.closeSession();
再換用sql plus查詢一下:
也是沒(méi)有查詢到剛插入的數(shù)據(jù)!這。。。好奇怪啊!當(dāng)然,這一點(diǎn)都不奇怪。
我們知道,plsqldeveloper 每新建一個(gè)sql會(huì)話窗口,就相當(dāng)于創(chuàng)建了一個(gè)事務(wù),所以,當(dāng)窗口沒(méi)有關(guān)閉的時(shí)候,事務(wù)并沒(méi)有提交,所以,數(shù)據(jù)庫(kù)中的數(shù)據(jù)也不會(huì)發(fā)生改變,但是,在plsqldeveloper中如果插入之后立即進(jìn)行查詢是會(huì)顯示出來(lái)的,它會(huì)首先取出操作之前的數(shù)據(jù),然后對(duì)操作進(jìn)行對(duì)應(yīng)的模擬顯示,而事實(shí)上數(shù)據(jù)庫(kù)中的數(shù)據(jù)還沒(méi)有進(jìn)行持久化改變,所以用MyEclipse和sqlplus不會(huì)查詢到新數(shù)據(jù);
解決辦法:
①執(zhí)行完sql語(yǔ)句以后手動(dòng)關(guān)閉當(dāng)前的sql窗口,窗口一關(guān)閉,它會(huì)默認(rèn)的提交事務(wù),當(dāng)然,這方式很........?-_-|||
②sql命令后面加入“commit;”命令,通過(guò)語(yǔ)句提交事務(wù)
③點(diǎn)擊plsql developer的這個(gè)按鈕,提交事務(wù)(或F10),如圖:
當(dāng)然這個(gè)問(wèn)題只適合為我們這些菜鳥(niǎo)級(jí)的人物提個(gè)醒,大神請(qǐng)饒過(guò),小弟如有說(shuō)明不正確的地方,還望大神指出。
總結(jié)
以上是生活随笔為你收集整理的oracle插入后查不到,Oracle表刚插入数据,但是在MyEclipse中却查不到(代码完全正确)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 二战美国陆军与海军陆战队班排火力对比
- 下一篇: 海军075型两栖攻击舰