最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中ResultSet遍歷數(shù)據(jù)操作

 更新時間:2020年08月15日 12:02:23   作者:liuyunshengsir  
這篇文章主要介紹了java中ResultSet遍歷數(shù)據(jù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1.查找數(shù)據(jù)庫中表的列名

<pre name="code" class="html">String sql = "select *from tblmetadatainfo";
 ResultSet rs = MySqlHelper.executeQuery(sql, null);
 String str="";
 try {
  ResultSetMetaData rsmd = rs.getMetaData();
  for (int i = 1; i < rsmd.getColumnCount(); i++) {
  str+=rsmd.getColumnName(i)+",";
  }
  str=str.substring(0, str.length()-1);
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

2.查找數(shù)據(jù)庫中表中每條記錄的列值

for(int i=1;i<rs.getMetaData().getColumnCount();i++){
   str+=rs.getString(i)+",";
  }

補充知識:Java:使用ResultSet.next()執(zhí)行含有rownum的SQL語句速度緩慢

在使用Oracle數(shù)據(jù)庫進行分頁查詢時,經(jīng)常會用到如下SQL:

select tm.* from (select rownum rm, t.* xmlrecord from testtable t) tm where tm.rm > ? and tm.rm <= ?

使用的java代碼如下:

int startIdx = 0;
int endIdx = 10000; 
String sql = "select tm.* from (select rownum rm, t.* xmlrecord from testtable t) tm where tm.rm > ? and tm.rm <= ?";
 
try (Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql);) {
 
 ps.setInt(1, startIdx);
 ps.setInt(2, endIdx);
 
 try (ResultSet rs = ps.executeQuery();) {
 while (rs.next()) {
  String id = rs.getString(2);
 
  System.out.println("id="+id);
 }
 }
}

當使用以上代碼時,會發(fā)現(xiàn)當取完最后一條記錄后,再執(zhí)行rs.next()時,本來希望返回false后跳出循環(huán),但rs.next()會執(zhí)行非常長的時間。解決的方法是不讓rs.next()來判斷下一條記錄不存在,而在代碼通過計數(shù)來實現(xiàn):

int startIdx = 0;
int endIdx = 10000;
int i = 0;
int count = endIdx - startIdx;
String sql = "select tm.* from (select rownum rm, t.* xmlrecord from testtable t) tm where tm.rm > ? and tm.rm <= ?";
 
try (Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql);) {
 
 ps.setInt(1, startIdx);
 ps.setInt(2, endIdx);
 
 try (ResultSet rs = ps.executeQuery();) {
  while (rs.next()) {
  i++;
  String id = rs.getString(2); 
  System.out.println("id="+id);
   if(i == count) {
   break;
  }
 }
 }
}

如果代碼中設(shè)置了fetchSize,并且fetchSize不能被count整除時,在取最后一片數(shù)據(jù)時,rs.next()也會執(zhí)行很長時間:

int startIdx = 0;
int endIdx = 10000; 
String sql = "select tm.* from (select rownum rm, t.* xmlrecord from testtable t) tm where tm.rm > ? and tm.rm <= ?";
 
try (Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql);) {
 ps.setFetchSize(300);
 ps.setInt(1, startIdx);
 ps.setInt(2, endIdx);
 
 try (ResultSet rs = ps.executeQuery();) {
 
 while (rs.next()) {
  String id = rs.getString(2);
 
  System.out.println("id="+id);
 }
 }
}

以上代碼中,當取得9900條數(shù)據(jù)后,再取下一個300條時,rs.next()就會執(zhí)行很長時間,可能是由于取不到一個完整的300條記錄造成的。解決方法是將fetchSize設(shè)置成能被count整除的數(shù)字,比如:

ps.setFetchSize(500);

在以上兩種狀況下,為什么rs.next()會執(zhí)行很長時間,還不是很清楚,但可以通過上述方式解決。至于為什么會有這個問題,有知道原因的朋友,請不吝賜教。

以上這篇java中ResultSet遍歷數(shù)據(jù)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Jenkins一鍵打包部署SpringBoot應(yīng)用

    Jenkins一鍵打包部署SpringBoot應(yīng)用

    本文主要介紹了Jenkins一鍵打包部署SpringBoot應(yīng)用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • RabbitMQ實現(xiàn)Work Queue工作隊列的示例詳解

    RabbitMQ實現(xiàn)Work Queue工作隊列的示例詳解

    工作隊列(又稱任務(wù)隊列)的主要思想是避免立即執(zhí)行資源密集型任務(wù),而不得不等待它完成。本篇文章將記錄和分享RabbitMQ工作隊列相關(guān)的知識點,希望對大家有所幫助
    2023-01-01
  • Java的四種常見線程池及Scheduled定時線程池實現(xiàn)詳解

    Java的四種常見線程池及Scheduled定時線程池實現(xiàn)詳解

    這篇文章主要介紹了Java的四種常見線程池及Scheduled定時線程池實現(xiàn)詳解,在Java中,我們可以通過Executors類來創(chuàng)建ScheduledThreadPool,Executors類提供了幾個靜態(tài)方法來創(chuàng)建不同類型的線程池,包括ScheduledThreadPool,需要的朋友可以參考下
    2023-09-09
  • 簡單了解Java創(chuàng)建線程兩種方法

    簡單了解Java創(chuàng)建線程兩種方法

    這篇文章主要介紹了簡單了解Java創(chuàng)建線程兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 如何通過Maven倉庫安裝Spire系列的Java產(chǎn)品

    如何通過Maven倉庫安裝Spire系列的Java產(chǎn)品

    這篇文章主要介紹了如何通過Maven倉庫安裝Spire系列的Java產(chǎn)品,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 持久層ORM框架Hibernate框架的使用及搭建方式

    持久層ORM框架Hibernate框架的使用及搭建方式

    Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫,本文重點給大家介紹持久層ORM框架Hibernate框架的使用及搭建方式,感興趣的朋友一起看看吧
    2021-11-11
  • Java Properties簡介_動力節(jié)點Java學(xué)院整理

    Java Properties簡介_動力節(jié)點Java學(xué)院整理

    Java中有個比較重要的類Properties(Java.util.Properties),主要用于讀取Java的配置文件,各種語言都有自己所支持的配置文件,配置文件中很多變量是經(jīng)常改變的,這樣做也是為了方便用戶,讓用戶能夠脫離程序本身去修改相關(guān)的變量設(shè)置
    2017-05-05
  • springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種)

    springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種)

    本文介紹了springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種),詳細的介紹了兩種方式,一種是json格式傳遞,另一種是Map傳遞,具有一定的參考價值,有興趣的可以了解一下
    2017-12-12
  • 如何使用Code128字體將文本轉(zhuǎn)換為code128條形碼

    如何使用Code128字體將文本轉(zhuǎn)換為code128條形碼

    這篇文章主要介紹了如何使用Code128字體將文本轉(zhuǎn)換為code128條形碼 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Spring Cloud中關(guān)于Feign的常見問題總結(jié)

    Spring Cloud中關(guān)于Feign的常見問題總結(jié)

    這篇文章主要給大家介紹了Spring Cloud中關(guān)于Feign的常見問題,文中通過示例代碼介紹的很詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02

最新評論

南川市| 沙雅县| 苗栗市| 西华县| 平和县| 普洱| 楚雄市| 德令哈市| 齐齐哈尔市| 壶关县| 西林县| 连州市| 莲花县| 宿松县| 文水县| 昭通市| 竹山县| 大埔区| 昆明市| 尤溪县| 高阳县| 新蔡县| 黔东| 仲巴县| 延津县| 建昌县| 梅州市| 建湖县| 新巴尔虎右旗| 安义县| 丰顺县| 镇宁| 衡南县| 城固县| 大余县| 格尔木市| 汪清县| 德庆县| 万宁市| 专栏| 泰宁县|