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

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

 更新時間:2013年07月31日 09:15:44   作者:  
以下是對可視化Swing中JTable控件綁定SQL數(shù)據(jù)源的兩種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考一下

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

以下,我們就通過這兩個構(gòu)造方法來將JTable綁定到SQL數(shù)據(jù)庫。

必要的準(zhǔn)備工作
一、有一個可供綁定的數(shù)據(jù)庫。
二、在可視化Swing中拖拉進(jìn)來一個Jtable控件。

方法一:通過二維數(shù)組綁定
該方法用到的構(gòu)造方法為:
JTable(Object[][] rowData, Object[] columnNames)
構(gòu)造一個 JTable 來顯示二維數(shù)組 rowData 中的值,其列名稱為 columnNames。
構(gòu)建二維數(shù)組rowData
通過上節(jié)博文“預(yù)編譯”的學(xué)習(xí),我們已經(jīng)能夠?qū)QL數(shù)據(jù)庫讀取至ResultSet 中。
《JDBC之PreparedStatement類中預(yù)編譯的綜合應(yīng)用解析》
回顧如下:

復(fù)制代碼 代碼如下:

 /** 查詢并返回記錄集 */
 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;
 }

【注】只是與上節(jié)博客的方法名不同而已。。
現(xiàn)在,我們?yōu)榱藢esultSet 轉(zhuǎn)化為二維數(shù)組,寫如下方法:
復(fù)制代碼 代碼如下:

 /** 把結(jié)果集轉(zhuǎn)成Object[][] */
 public Object[][] resultSetToObjectArray(ResultSet rs) {
  Object[][] data = null;
  try { 
   rs.last();
   int rows = rs.getRow();
   data = new Object[rows][]; 
   ResultSetMetaData md = rs.getMetaData();//獲取記錄集的元數(shù)據(jù)
   int columnCount = md.getColumnCount();//列數(shù)
   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:
復(fù)制代碼 代碼如下:

 UserDAO userDAO = new UserDAO();

即可將SQL數(shù)據(jù)轉(zhuǎn)化為二維數(shù)組:
復(fù)制代碼 代碼如下:

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

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

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

構(gòu)建JTable的Model:
復(fù)制代碼 代碼如下:

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

整體代碼視圖:

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



方法二:通過Model綁定該方法用到的構(gòu)造方法為:

JTable(TableModel dm)
構(gòu)造一個 JTable,使用數(shù)據(jù)模型 dm、默認(rèn)的列模型和默認(rèn)的選擇模型對其進(jìn)行初始化。

設(shè)置Model路徑

進(jìn)入 JTable 控件的控制面板,點擊model。

選擇Model來自代碼。

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

為了調(diào)用方便,建議將方法設(shè)置為靜態(tài)方法。



寫入Model 方法

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

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

復(fù)制代碼 代碼如下:

 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 效果

相關(guān)文章

  • Java使用跳轉(zhuǎn)結(jié)構(gòu)實現(xiàn)隊列和棧流程詳解

    Java使用跳轉(zhuǎn)結(jié)構(gòu)實現(xiàn)隊列和棧流程詳解

    這篇文章主要介紹了Java使用跳轉(zhuǎn)結(jié)構(gòu)實現(xiàn)隊列和棧流程,連續(xù)結(jié)構(gòu)和跳轉(zhuǎn)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)中常見的兩種基本數(shù)據(jù)結(jié)構(gòu),而我們本次的主角棧和隊列都 既可以使用使用跳轉(zhuǎn)結(jié)構(gòu)實現(xiàn)也可以使用連續(xù)結(jié)構(gòu)實現(xiàn)
    2023-04-04
  • Spring Boot中l(wèi)ombok的安裝與使用詳解

    Spring Boot中l(wèi)ombok的安裝與使用詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot中l(wèi)ombok安裝與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • springboot使用spring-data-jpa操作MySQL數(shù)據(jù)庫

    springboot使用spring-data-jpa操作MySQL數(shù)據(jù)庫

    這篇文章主要介紹了springboot使用spring-data-jpa操作MySQL數(shù)據(jù)庫,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Java基礎(chǔ)篇_有關(guān)接口和抽象類的幾道練習(xí)題(分享)

    Java基礎(chǔ)篇_有關(guān)接口和抽象類的幾道練習(xí)題(分享)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)篇_有關(guān)接口和抽象類的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 利用Spring JPA中的@Version注解實現(xiàn)樂觀鎖

    利用Spring JPA中的@Version注解實現(xiàn)樂觀鎖

    樂觀鎖是數(shù)據(jù)庫和應(yīng)用程序中使用的一種并發(fā)控制策略,用于在多個事務(wù)嘗試更新單個記錄時確保數(shù)據(jù)完整性,Java Persistence API (JPA) 提供了一種借助@Version注解在 Java 應(yīng)用程序中實現(xiàn)樂觀鎖的機(jī)制,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • Java 讀取指定路徑的文本文件并返回String的方法

    Java 讀取指定路徑的文本文件并返回String的方法

    今天小編就為大家分享一篇Java 讀取指定路徑的文本文件并返回String的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問題

    SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問題

    這篇文章主要介紹了SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 詳解Spring Boot集成MyBatis(注解方式)

    詳解Spring Boot集成MyBatis(注解方式)

    本篇文章主要介紹了詳解Spring Boot集成MyBatis(注解方式),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java常用鎖synchronized和ReentrantLock的區(qū)別

    Java常用鎖synchronized和ReentrantLock的區(qū)別

    這篇文章主要介紹了Java常用鎖synchronized和ReentrantLock的區(qū)別,二者的功效都是相同的,但又有很多不同點,下面我們就進(jìn)入文章了解具體的相關(guān)內(nèi)容吧。需要的小伙伴也可以參考一下
    2022-05-05
  • java單例五種實現(xiàn)模式解析

    java單例五種實現(xiàn)模式解析

    這篇文章主要介紹了java單例五種實現(xiàn)模式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09

最新評論

陆良县| 镇沅| 故城县| 育儿| 潢川县| 同心县| 崇仁县| 黑水县| 日喀则市| 香河县| 明水县| 图们市| 资阳市| 吴江市| 漳浦县| 呼图壁县| 柳林县| 米泉市| 百色市| 闸北区| 康乐县| 清新县| 宣化县| 社旗县| 庆城县| 青铜峡市| 赤水市| 英吉沙县| 沅陵县| 黄梅县| 佛坪县| 清河县| 呼伦贝尔市| 友谊县| 顺平县| 连城县| 乳山市| 宜昌市| 临猗县| 武陟县| 黄平县|