生活随笔
收集整理的這篇文章主要介紹了
Java数据库查询,获得离线数据集的解决办法。
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JDBC數(shù)據(jù)庫編程的時候,通常使用ResultSet的話,但數(shù)據(jù)庫連接關閉后,就不能讀取值了。為了使得數(shù)據(jù)庫連接關閉后依然能夠讀取值,就需要吧ResultSet中的值轉到一變量中。本文提供2種方式。
一種是使用類型List<Map<String, Object>>
代碼如下:
rs?=?pstmt.executeQuery();??ResultSetMetaData?rsm?=?rs.getMetaData();??List<Map<String,?Object>>?result?=?new?ArrayList<Map<String,?Object>>();?while?(rs.next())?{?Map<String,?Object>?map?=?new?TreeMap<String,?Object>();?for?(int?index?=?1;?index?<=?rsm.getColumnCount();?index++)?{?map.put(rsm.getColumnName(index),?rs.getObject(index));?}?result.add(map);?}? ------------------------------
然后遍歷的時候只需要提供列名就可以了。
for(Map<String,?Object>?item:l)??????{????????????????????????????????????System.out.print(item.get("id"));????System.out.print(item.get("name"));??System.out.print(item.get("age"));???System.out.println();????????????????}?? 還有一種使用CachedRowSetImpl類,此類的文檔在http://docs.oracle.com/cd/E17824_01/dsc_docs/docs/jscreator/apis/rowset/com/sun/rowset/CachedRowSetImpl.html#populate(java.sql.ResultSet)。
此類的使用也很簡單,調(diào)用populate方法就可以從ResultSet中獲得數(shù)據(jù)。
rs?=?pstmt.executeQuery();?CachedRowSetImpl?crs?=?new?CachedRowSetImpl();?crs.populate(rs);?return?crs;? 遍歷的時候:
while?(crs.next())?{????????System.out.print(crs.getObject("id"));?????????System.out.print(crs.getObject("name"));?????????System.out.print(crs.getObject("age"));?????????System.out.println();?????}? -------------------------------------
在使用此類的時候,發(fā)現(xiàn)一個問題Eclipse無法找到這個類,因此也無法自動的import。解決辦法是在build path中,刪除JRE后重新Add一次就OK了。不知道為什么會有這個問題。
轉載于:https://blog.51cto.com/cnn237111/1132138
總結
以上是生活随笔為你收集整理的Java数据库查询,获得离线数据集的解决办法。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。