可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

傻瞄瞄儿滴窝窝

傻瞄瞄儿滴窝窝

2016-02-19 08:57

图老师小编精心整理的可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

在 MyEclipse 的可视化 Swing 中,有 JTable 控件。
JTable 用来显示和编辑常规二维单元表。
那么,如何将 数据库SQL中的数据绑定至JTable中呢?
在这里,提供两种方法。
JTable的构造方法
通过查阅Java的API,可以可以得到JTable的两个重要的构造方法:
JTable(Object[][] rowData, Object[] columnNames)
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。
JTable(TableModel dm)
构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

以下,我们就通过这两个构造方法来将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.length0) {
    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; icolumnCount; 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。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

方法的写法与上面的大同小异,不再赘述。

代码如下:

 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 = {};
  ArrayListHashMapObject, Object list = bDao.Query(sql, ss);
//  bDao.AllArray(list);
  int i = 0, j = 0;
  for (HashMapObject, Object maps : list) {
   SetObject 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 效果

展开更多 50%)
分享

猜你喜欢

可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

编程语言 网络编程
可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

使用自定义的数据源进行DataGrid控件的数据绑定

电脑网络
使用自定义的数据源进行DataGrid控件的数据绑定

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用Delphi编写自己的可视化控件

编程语言 网络编程
用Delphi编写自己的可视化控件

详细解析信息可视化图表的设计方法

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
详细解析信息可视化图表的设计方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何用Delphi编写自己的可视化控件

编程语言 网络编程
如何用Delphi编写自己的可视化控件

36个卓越的可视化数据工具分享

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
36个卓越的可视化数据工具分享

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JavaScript中的对象化编程

JavaScript中的对象化编程

CentOS系统中RPM软件包操作指南

CentOS系统中RPM软件包操作指南
下拉加载更多内容 ↓