亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因分析

2024-07-13 10:15:19
字體:
來源:轉載
供稿:網友

JAVAWEB dbutils執行sql命令并遍歷結果集時不能查到內容的原因及處理方法如下所示:

遍歷結果集時只遍歷bean對象才會只輸出第一行那種內容(第一行是輸出了UserEntity類實例化的對象),所以這里需要 re.getRepoTableName() 才能通過對象調用相對應的內容

這樣一來,就可以取到值了

javaweb,dbutils,sql命令,sql遍歷結果集

 

javaweb,dbutils,sql命令,sql遍歷結果集

PS:JavaWeb之DBUtils詳細介紹如下所示:

 

一、什么是DBUtils及作用

  DBUtils是apache公司寫的。DBUtils是java編程中的數據庫操作實用工具,小巧簡單實用。

  DBUtils封裝了對JDBC的操作,簡化了JDBC操作。可以少寫代碼。

  1.對于數據表的讀操作,他可以把結果轉換成List,Array,Set等java集合,便于程序員操作;

  2.對于數據表的寫操作,也變得很簡單(只需寫sql語句)

  3.可以使用數據源,使用JNDI,數據庫連接池等技術來優化性能--重用已經構建好的數據庫連接對象

二、DBUtils的三個核心對象

  2.1、QueryRunner類

    QueryRunner中提供對sql語句操作的API.它主要有三個方法:query() 用于執行select,update() 用于執行insert update delete,batch() 批處理。等下下面的會詳細的介紹這幾種方法的用法。

  2.2、ResultSetHandler接口

    用于定義select操作后,怎樣封裝結果集.它總共有9個常用的實現類,下面我會詳細的為大家介紹怎么去使用。

  2.3、DbUtils類

    它就是一個工具類,定義了關閉資源與事務處理的方法

三、怎么去使用DBUtils框架

  3.1、使用步驟

    導入相對應的jar包

    創建QueryRunner對象

      使用query方法執行select語句

      使用ResultSetHandler封裝結果集

      使用DbUtils類釋放資源

  3.2、實例

    注:本人使用的是C3P0連接池

import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.ResultSetHandler;import org.apache.commons.dbutils.handlers.BeanListHandler;import org.junit.Test;import com.jxlg.domain.User;public class TestSelect { @Test public void testSelect(){ //創建一個QueryRunner對象 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  // new ResultSetHandler<List<User>>告訴我們如何封裝結果集  List<User> list = qr.query("select * from user", new ResultSetHandler<List<User>>(){  @Override  //query語句執行select語句后,結果一返回值的形式傳遞過來  public List<User> handle(ResultSet rs) throws SQLException {   List<User> list = new ArrayList<User>();   while(rs.next()){   User u = new User();   u.setId(rs.getInt(1));   u.setUsername(rs.getString(2));   u.setPassword(rs.getString(3));   u.setEmail(rs.getString(4));   u.setBirthday(rs.getDate(5));   list.add(u);   }   return list;  }  });  for (User user : list) {  System.out.println(user);  } } catch (SQLException e) {  e.printStackTrace(); }} @Test public void testSelect2(){ //創建一個QueryRunner對象 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  //執行sql語句,返回結果  List<User> list = qr.query("select * from user where id=? and username=?", new BeanListHandler<User>(User.class),1,"tom");  for (User user : list) {  System.out.println(user);  } } catch (SQLException e) {  e.printStackTrace(); } }}

四、DBUtils三個核心對象詳解

  4.1、QueryRunner對象

    4.1.1、構造函數

         new QueryRunner(); 它的事務可以手動控制?!                   ?/p>

也就是說此對象調用的方法(如:query、update、batch)參數中要有Connection對象。

           new QueryRunner(DataSource ds); 它的事務是自動控制的。一個sql一個事務。                           

此對象調用的方法(如:query、update、batrch)參數中無需Connection對象。

    4.1.2、常用方法 

javaweb,dbutils,sql命令,sql遍歷結果集

   javaweb,dbutils,sql命令,sql遍歷結果集

        javaweb,dbutils,sql命令,sql遍歷結果集

        javaweb,dbutils,sql命令,sql遍歷結果集

        javaweb,dbutils,sql命令,sql遍歷結果集

  4.2、ResultSetHandler接口

    4.2.1、它有9個結果處理器

      ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[]
      ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中
      ColumnListHandler:取某一列的數據。封裝到List中。
      KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中,再把這個Map封裝到另外一個Map中,key為指定的字段值。
      MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中
      MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List中
      ScalarHandler:適合取單行單列數據
      BeanHandler
      BeanListHandler

    4.2.2、實例       

import static org.junit.Assert.*;import java.sql.SQLException;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.ArrayHandler;import org.apache.commons.dbutils.handlers.ArrayListHandler;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.ColumnListHandler;import org.apache.commons.dbutils.handlers.KeyedHandler;import org.apache.commons.dbutils.handlers.MapHandler;import org.apache.commons.dbutils.handlers.MapListHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;import org.junit.Test;import com.jxlg.domain.User;public class TestResultSetHandler { @Test public void test1() { //ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[] QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  Object[] o = qr.query("select * from user where id=?", new ArrayHandler(),5);  for (Object object : o) {  System.out.println(object);  } } catch (SQLException e) {  e.printStackTrace(); } } @Test public void test2() throws SQLException { //ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); List<Object[]> list = qr.query("select * from user", new ArrayListHandler()); for (Object[] objects : list) {  for (Object object : objects) {  System.out.println(object);  }  System.out.println("----------------------"); } } @Test public void test3() throws SQLException { //ColumnListHandler:取某一列的數據。封裝到List中 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); List<Object> list = qr.query("select username,password from user ", new ColumnListHandler(1)); for (Object object : list) {  System.out.println(object); }  } @Test public void test4() throws SQLException { //KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中, //再把這個Map封裝到另外一個Map中,key為指定的字段值。 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); //大的Map的key是表中的某列數據,小的Map的key是表的列名,所以大的map的key用的是Object類型,小的是String。 Map<Object, Map<String, Object>> map = qr.query("select * from user", new KeyedHandler(1)); for (Map.Entry<Object, Map<String,Object>> m : map.entrySet()) {  System.out.println(m);//就是id至,因為設置了“1”.  for (Map.Entry<String, Object> mm : m.getValue().entrySet()) {  System.out.println(mm);//取出小map中的key和value  }  System.out.println("--------------------"); } } @Test public void test5() throws SQLException { //MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); Map<String, Object> map = qr.query("select * from user", new MapHandler()); for (Map.Entry<String, Object> m : map.entrySet()) {  System.out.println(m.getKey()+"/t"+m.getValue());  //默認取第一行數據,需要去其它行用where加條件 } } @Test public void test6() throws SQLException { //MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List中 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); List<Map<String, Object>> list = qr.query("select * from user", new MapListHandler()); for (Map<String, Object> map : list) {  for (Map.Entry<String, Object> m : map.entrySet()) {  System.out.println(m);   }  System.out.println("-----------"); } } @Test public void test7() throws SQLException { //ScalarHandler:適合取單行單列數據 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); Object o = qr.query("select * from user", new ScalarHandler(2)); System.out.println(o); }  @Test public void test8() throws SQLException { //BeanHandler:適合取單行單列數據 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); User user = qr.query("select * from user", new BeanHandler<User>(User.class)); System.out.println(user); } }

五、使用DBUtils做一個增刪改查的例子  

import static org.junit.Assert.*;import java.sql.SQLException;import java.util.Date;import javax.crypto.spec.OAEPParameterSpec;import org.apache.commons.dbutils.QueryRunner;import org.junit.Test;public class TestInCURD { @Test public void testInsert() { //創建一個QueryRunner對象 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  qr.update("insert into user (username,password,email,birthday)values(?,?,?,?)", "guapi","4646","guapi@163.com",new Date()); } catch (SQLException e) {  e.printStackTrace(); } } @Test public void testUpdate() { //創建一個QueryRunner對象 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  qr.update("update user set username=?,password=? where id=4 ", "meizimeizi","520520"); } catch (SQLException e) {  e.printStackTrace(); } } @Test public void testDelete() { //創建一個QueryRunner對象 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  qr.update("delete from user where id=? ",4); } catch (SQLException e) {  e.printStackTrace(); } } @Test public void testBatch() { //創建一個QueryRunner對象 QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try {  Object[][] params = new Object[10][]; //高維代表執行多少次sql語句  for(int i =0;i<params.length;i++){  params[i] =new Object[]{"guapi"+i,"4646","guapi@163.com",new Date()};   }  qr.batch("insert into user (username,password,email,birthday)values(?,?,?,?)", params ); } catch (SQLException e) {  e.printStackTrace(); } }}

總結

以上所述是小編給大家介紹的JavaWeb dbutils執行sql命令并遍歷結果集時不能查到內容的原因分析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国内免费在线视频| 精品一区二区三区四区| 亚洲人成五月天| 亚洲第一黄色网| 最新91在线视频| 国产精品a久久久久久| 中文综合在线观看| 久久精品91久久久久久再现| 成人黄色av播放免费| x99av成人免费| 国产精品电影在线观看| 欧美日韩另类视频| 欧美久久久精品| 国产精品久久一区| 欧美俄罗斯性视频| 亚洲自拍小视频免费观看| 国产精品高潮呻吟久久av黑人| 538国产精品一区二区免费视频| 日韩欧美在线第一页| 成人精品久久一区二区三区| 亚洲欧美一区二区三区四区| 亚洲精品国产精品自产a区红杏吧| 中文字幕日韩欧美在线| 亚洲跨种族黑人xxx| 奇门遁甲1982国语版免费观看高清| 色狠狠久久aa北条麻妃| 欧美电影在线观看| 欧美一区二区三区免费观看| 欧美亚洲国产日韩2020| 久久久精品美女| 中文字幕亚洲自拍| 亚洲精品欧美日韩专区| 色婷婷综合成人| 精品国产一区二区三区久久| 久久露脸国产精品| 国产99视频精品免视看7| 亚洲女人被黑人巨大进入al| 在线精品视频视频中文字幕| 日韩中文字幕视频| 久久国产精品久久久久久久久久| 中文字幕欧美精品日韩中文字幕| 亚洲免费视频网站| 欧美限制级电影在线观看| 中文字幕国内精品| 国产精品亚洲一区二区三区| 日韩av电影在线免费播放| 国产日产久久高清欧美一区| 欧美日韩第一页| 日韩大片在线观看视频| 欧美性受xxxx黑人猛交| 都市激情亚洲色图| 综合136福利视频在线| 欧美精品在线看| 成人在线激情视频| 亚洲精品720p| 色诱女教师一区二区三区| 日韩欧美在线中文字幕| 午夜精品三级视频福利| www.日韩视频| 久久精品国产69国产精品亚洲| 久久综合伊人77777蜜臀| 日韩欧美在线网址| 欧美专区国产专区| 91免费人成网站在线观看18| 精品国产乱码久久久久久婷婷| 欧美一区二区三区免费视| 国产精品羞羞答答| 日韩亚洲欧美中文高清在线| 日本一区二区在线播放| 亚洲香蕉成视频在线观看| 姬川优奈aav一区二区| 国产欧美一区二区三区久久人妖| 欧美激情区在线播放| 日韩电影大片中文字幕| 欧美视频在线视频| 亚洲女人天堂成人av在线| 最新69国产成人精品视频免费| 亚洲色图日韩av| 欧美成人一二三| 68精品久久久久久欧美| 日韩av观看网址| 国产精品九九久久久久久久| 亚洲视频欧洲视频| 中文在线资源观看视频网站免费不卡| 欧美激情精品在线| 久久手机免费视频| 亚洲精品动漫100p| 欧美日韩午夜剧场| 中文字幕一区二区精品| 久久99精品久久久久久青青91| 国产精品亚洲片夜色在线| 国产成人免费91av在线| 播播国产欧美激情| 欧美亚洲在线观看| 国产欧美欧洲在线观看| 精品久久久中文| 91av福利视频| 亚洲性生活视频在线观看| 欧美另类在线播放| 欧美大片免费观看在线观看网站推荐| 午夜精品一区二区三区在线视| 亚洲国产美女精品久久久久∴| 精品国产一区二区三区久久| 亚洲永久在线观看| 亚洲精品www久久久久久广东| 精品五月天久久| 亚洲欧美日韩图片| 亚洲免费一在线| 日韩欧美在线视频观看| 国产在线98福利播放视频| 欧美肥老太性生活视频| 成人有码视频在线播放| 精品亚洲一区二区三区在线观看| 午夜精品一区二区三区在线| 亚洲欧美日韩直播| 国产日韩欧美综合| 欧美情侣性视频| 国产在线观看一区二区三区| 久久99精品国产99久久6尤物| 国产91在线播放| 久久综合久久美利坚合众国| 欧美在线观看一区二区三区| 91色精品视频在线| 国产网站欧美日韩免费精品在线观看| 亚洲精品资源美女情侣酒店| 高清欧美电影在线| 91在线无精精品一区二区| 成人av在线网址| 亚洲一区二区精品| 欧美一区视频在线| 日韩在线观看免费全| 18一19gay欧美视频网站| 久久精品夜夜夜夜夜久久| 亚洲影视九九影院在线观看| 97在线观看视频国产| 国产精品999999| 国外成人免费在线播放| 亚洲mm色国产网站| 国产在线a不卡| 亚洲色无码播放| 两个人的视频www国产精品| 欧美资源在线观看| 亚洲美女激情视频| 日韩av免费在线| 欧美激情亚洲国产| 欧美成人在线免费视频| 国产免费观看久久黄| 欧美黑人巨大精品一区二区| 亚洲午夜小视频| 国产午夜精品美女视频明星a级| 国产午夜精品全部视频在线播放| 91精品国产电影| 欧美与欧洲交xxxx免费观看| 亚洲va国产va天堂va久久| 久久久久久久色| 国产精品手机播放| 久久成人一区二区| 亚洲欧洲偷拍精品| 欧美激情视频在线免费观看 欧美视频免费一| 日本久久91av| 亚洲激情视频在线观看| 亚洲精品v欧美精品v日韩精品| 亚洲一区亚洲二区亚洲三区| 国产精品高精视频免费|