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

首頁 > 編程 > Java > 正文

可視化Swing中JTable控件綁定SQL數據源的兩種方法深入解析

2019-11-26 16:01:25
字體:
來源:轉載
供稿:網友

在 MyEclipse 的可視化 Swing 中,有 JTable 控件。
JTable 用來顯示和編輯常規二維單元表。
那么,如何將 數據庫SQL中的數據綁定至JTable中呢?
在這里,提供兩種方法。
JTable的構造方法
通過查閱Java的API,可以可以得到JTable的兩個重要的構造方法:
JTable(Object[][] rowData, Object[] columnNames)
構造一個 JTable 來顯示二維數組 rowData 中的值,其列名稱為 columnNames。
JTable(TableModel dm)
構造一個 JTable,使用數據模型 dm、默認的列模型和默認的選擇模型對其進行初始化。

以下,我們就通過這兩個構造方法來將JTable綁定到SQL數據庫。

必要的準備工作
一、有一個可供綁定的數據庫。
二、在可視化Swing中拖拉進來一個Jtable控件。

方法一:通過二維數組綁定
該方法用到的構造方法為:
JTable(Object[][] rowData, Object[] columnNames)
構造一個 JTable 來顯示二維數組 rowData 中的值,其列名稱為 columnNames。
構建二維數組rowData
通過上節博文“預編譯”的學習,我們已經能夠將SQL數據庫讀取至ResultSet 中。
《JDBC之PreparedStatement類中預編譯的綜合應用解析》
回顧如下:

復制代碼 代碼如下:

 /** 查詢并返回記錄集 */
 public ResultSet getResultSet(String sql, Object[] objArr){
  getConnection();
  try {
   pStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
   if(objArr!=null && objArr.length>0) {
    for (int i = 0; i < objArr.length; i++) {
     pStatement.setObject(i+1, objArr[i]);
    }
   }
   rSet = pStatement.executeQuery();
   //list = resultSetToList(rs);
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   //close();
  }
  return rSet;
 }

【注】只是與上節博客的方法名不同而已。。
現在,我們為了將ResultSet 轉化為二維數組,寫如下方法:
復制代碼 代碼如下:

 /** 把結果集轉成Object[][] */
 public Object[][] resultSetToObjectArray(ResultSet rs) {
  Object[][] data = null;
  try { 
   rs.last();
   int rows = rs.getRow();
   data = new Object[rows][]; 
   ResultSetMetaData md = rs.getMetaData();//獲取記錄集的元數據
   int columnCount = md.getColumnCount();//列數
   rs.first();
   int k = 0;
   while(rs.next()) {
    System.out.println("i"+k);
    Object[] row = new Object[columnCount];
    for(int i=0; i<columnCount; i++) {
     row[i] = rs.getObject(i+1).toString();
    }
    data[k] = row;
    k++;
   }
  } catch (Exception e) {
  }
  return data;
 } 

并將這兩個方法存至文件UserDAO.java中。
在Swing所在的Java文件中先實例化UserDAO:
復制代碼 代碼如下:

 UserDAO userDAO = new UserDAO();

即可將SQL數據轉化為二維數組:
復制代碼 代碼如下:

  Object[][] dataObjects = userDAO.resultSetToObjectArray(userDAO.getResultSet(
      "select id,username,password from t_userr", null));

構建列名稱 columnNames
這個比較簡單,只需要將列名稱寫入String數組即可。
復制代碼 代碼如下:

 String[] tableStrings = { "id", "username", "password" };

構建JTable的Model:
復制代碼 代碼如下:

 jTable1.setModel(new DefaultTableModel(dataObjects, tableStrings));

整體代碼視圖:

整體代碼視圖:
最終JTable效果圖:



方法二:通過Model綁定該方法用到的構造方法為:

JTable(TableModel dm)
構造一個 JTable,使用數據模型 dm、默認的列模型和默認的選擇模型對其進行初始化。

設置Model路徑

進入 JTable 控件的控制面板,點擊model。

選擇Model來自代碼。

填寫 model 的方法路徑:包名.Java文件名.方法名。

為了調用方便,建議將方法設置為靜態方法。



寫入Model 方法

在剛剛設置的路徑下寫入Model的方法,注意其返回類型為TableModel。

方法的寫法與上面的大同小異,不再贅述。

復制代碼 代碼如下:

 public static TableModel Member() {
  String[][] playerInfo = new String[80][8];
  BaseDAO bDao = new BaseDAO();
  String sql = "select id,realName,username,sex,phone,email,vocation,city from jdbctest";
  String[] ss = {};
  ArrayList<HashMap<Object, Object>> list = bDao.Query(sql, ss);
//  bDao.AllArray(list);
  int i = 0, j = 0;
  for (HashMap<Object, Object> maps : list) {
   Set<Object> keysObjects = maps.keySet();
   for (Object kObject : keysObjects) {
    playerInfo[i][j] = maps.get(kObject).toString();
    j++;
   }
   i++;
   j = 0;
  }
  String[] Names = { "id", "username", "sex", "phone","vocation","email","realName",   "city" };
  DefaultTableModel dModel = new DefaultTableModel(playerInfo, Names);
  return (TableModel)dModel;
 }

JTable 效果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热精品视频在线播放| 久久久久久久网站| 国产欧美一区二区三区久久人妖| 精品亚洲国产视频| 在线看国产精品| 国产精品永久免费视频| 欧美华人在线视频| 精品女同一区二区三区在线播放| 日韩av在线免费播放| 成人h视频在线观看播放| 日韩久久免费电影| 欧美超级乱淫片喷水| 中文字幕亚洲一区二区三区五十路| 亚洲一区二区国产| 日本老师69xxx| 欧美日韩免费观看中文| 日韩av免费在线观看| 国产在线视频91| 亚洲精品av在线| 欧美日韩另类视频| 久久久久久久久久久亚洲| 插插插亚洲综合网| 亚洲一区二区三区在线视频| 成人网中文字幕| 丰满岳妇乱一区二区三区| 国产精品欧美亚洲777777| 欧美精品日韩www.p站| 日韩亚洲精品视频| 亚洲国产精品人人爽夜夜爽| 91色视频在线观看| 欧美综合国产精品久久丁香| 亚洲精品91美女久久久久久久| 成人午夜两性视频| 久久青草精品视频免费观看| 亚洲美女精品成人在线视频| 日韩在线精品一区| 欧美人交a欧美精品| 69久久夜色精品国产7777| 国产一区二区三区在线视频| 日韩禁在线播放| 精品国产91乱高清在线观看| 欧美激情精品久久久久久免费印度| 九九久久精品一区| 久久在线免费视频| 日韩欧美亚洲范冰冰与中字| 国产精品嫩草影院一区二区| 视频在线一区二区| 91美女片黄在线观看游戏| 国产精品777| 亚洲永久免费观看| 国产精品久久久久久久久久久久久| 亚洲成人久久电影| 久久久久久久久中文字幕| 欧美激情a在线| 91精品91久久久久久| 久久综合伊人77777蜜臀| 国产精品96久久久久久| 中文字幕日韩在线播放| 国产精品在线看| 国产欧美日韩最新| 亚洲精品xxx| 日本不卡视频在线播放| 成人精品福利视频| 麻豆精品精华液| 欧美日韩激情视频| 日本亚洲精品在线观看| 日韩免费精品视频| 性欧美xxxx视频在线观看| 国产精品久久久久久影视| 91精品国产乱码久久久久久久久| 欧美一乱一性一交一视频| 中文字幕在线日韩| 国产欧美日韩精品专区| 国产精品美乳一区二区免费| 亚洲人线精品午夜| 国产精品青草久久久久福利99| 久久久在线免费观看| 久久久久久亚洲精品| 97国产真实伦对白精彩视频8| 亚洲成人黄色网址| 欧美午夜精品久久久久久浪潮| 国产+人+亚洲| 欧美男插女视频| 亚洲高清久久网| 操日韩av在线电影| 国产精品日韩欧美| 国产欧美在线看| 久久视频国产精品免费视频在线| 欧美人交a欧美精品| 青青草成人在线| 久久精品久久久久电影| 一个人看的www久久| 国产精品美女www爽爽爽视频| 亚洲欧美在线免费观看| 福利视频导航一区| 日韩欧美亚洲一二三区| 国产成+人+综合+亚洲欧美丁香花| 在线播放国产一区中文字幕剧情欧美| 亚洲欧洲视频在线| 美日韩丰满少妇在线观看| 成人午夜高潮视频| 亚洲男人的天堂网站| 国产美女精品免费电影| 亚洲欧美日韩中文在线制服| 国内精品久久久久久| 国产欧美va欧美va香蕉在| 国产精品视频一区国模私拍| 亚洲欧美综合v| 91影视免费在线观看| 亚洲qvod图片区电影| 91精品国产网站| 欧美理论在线观看| 国语自产精品视频在免费| 国产一区二中文字幕在线看| 亚洲一区二区三| 欧美日韩国产一区中文午夜| 亚洲欧美日韩天堂一区二区| 91亚洲va在线va天堂va国| 国产剧情久久久久久| 久久精品国产久精国产思思| 国产精品一区专区欧美日韩| 国产精品十八以下禁看| 国模精品视频一区二区三区| 欧美激情手机在线视频| 欧美成人免费观看| 色爱av美腿丝袜综合粉嫩av| 91久久久久久久久久久久久| 色与欲影视天天看综合网| 久久99久久99精品免观看粉嫩| 国产人妖伪娘一区91| 97精品久久久中文字幕免费| 亚洲精品网址在线观看| 久久久噜噜噜久久中文字免| 国产精品自在线| 亚洲电影免费观看高清完整版在线观看| 国产午夜精品麻豆| 欧美高清理论片| 亚洲免费成人av电影| 日韩中文第一页| 亚洲欧洲日韩国产| 欧美性猛交xxxx乱大交蜜桃| 亚洲第一区中文99精品| 欧美自拍视频在线观看| 欧美激情久久久久久| www.亚洲一区| 亚洲xxxxx| 亚洲变态欧美另类捆绑| 精品国偷自产在线视频| 亚洲成人性视频| xvideos亚洲人网站| 亚洲欧洲自拍偷拍| 亚洲社区在线观看| 欧美日在线观看| 欧美日韩国产成人在线| 91夜夜未满十八勿入爽爽影院| 亚洲第一色中文字幕| 国产婷婷色综合av蜜臀av| 亚洲最大成人网色| 欧美成人免费一级人片100| 国产亚洲欧洲在线| 欧美日韩一区二区在线播放| 尤物九九久久国产精品的特点| 精品在线小视频| 亚洲成**性毛茸茸|