JAVA在讀數據庫的時候,可否轉到指定的某一行?
由于ORACLE數據庫中有最大打開連接限制,比如插入操作一次性只能夠插入300條等,如果在當前連接再插入記錄就會報錯,可以采用重新連接的方式去插入。但是這里記錄太多,如果每到一個數就要去重新連接,然后還要去確定當前記錄是否已經存在于數據表中,這是一個很大的資源浪費。
我的想法是:
如果我在源表中已經讀到了300條記錄(讀記錄是不會出錯,但是目標寫入表要報最大連接限制錯誤,因而重新連接CONN都要重新連接),下次我從301條讀取,這樣我就省去了在目標表中去判定當前記錄是否已經存在,達到一個比較好的效率。
但是我看了一下,好像不可以直接轉到某一行,不知道那位朋友有解決的方案,小弟受教了。
问题点数:30、回复次数:5Top
1 楼mingr6370(丑男)回复于 2006-05-02 11:49:20 得分 0
PreparedStatement 插入4000条没问题,当然要设置数据库
你说的情况,就要取得当前最后一条数据?ResultSet.last() 试试吧Top
2 楼fenglibing(流星)回复于 2006-05-02 15:41:11 得分 0
數據庫我沒有設置的權限,所以我只能夠在自己的程序中去適應它。
不是到最后一條記錄,假如源表有10000條記錄,現在我讀了三百條,插入到目標表中,可是由于上面的原因,需要重新連接。我希望下次連接的時間,我可以指定我的源表指針一下就到301條記錄,我就不用到目標表中去判斷該記錄是是否已經存。
否則,我還得從源表的第一條記錄去讀,然后去目標表中比較,你可以想一下,如果我有有萬條記錄,且每次只能插入300條,可以算得出要比較的次數該是一個很多的數字。
所以,這里的浪費我想去掉,再待指教。Top
3 楼fenglibing(流星)回复于 2006-05-02 15:42:07 得分 0
當然這里不是一個簡單的表拷帳戶操作,這里要進行復雜的比較及運算Top
4 楼YidingHe(机枪兵)回复于 2006-05-02 15:53:55 得分 0
在查询语句后面加上(where...)“ and rownum>XXX”(仅限Oracle)
但是在翻页过程中如果数据行有增删改而影响了顺序,那就不正确了。Top
5 楼fenglibing(流星)回复于 2006-05-02 16:04:41 得分 0
方法不行,兄弟,我分別采用下面兩種方式都不行:
select * from card_rec_meteor where rownum>1;及
select * from card_rec_meteor where to_char(cr_cdate,'yyyy/mm/dd')='2006/04/28' and rownum>1;
都沒有記錄
里面是有記錄的。
Top




