html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

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

[ ] 已经帮助:人解决问题
以下是对可视化Swing中JTable控件绑定SQL数据源的两种方法进行了详细的分析介绍,需要的朋友可以过来参考一下
 

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

以下,我们就通过这两个构造方法来将JTable绑定到SQL数据库。SAFHTML5中文学习网 - HTML5先行者学习网

必要的准备工作SAFHTML5中文学习网 - HTML5先行者学习网
一、有一个可供绑定的数据库。SAFHTML5中文学习网 - HTML5先行者学习网
二、在可视化Swing中拖拉进来一个Jtable控件。SAFHTML5中文学习网 - HTML5先行者学习网
SAFHTML5中文学习网 - HTML5先行者学习网
方法一:通过二维数组绑定SAFHTML5中文学习网 - HTML5先行者学习网
该方法用到的构造方法为:SAFHTML5中文学习网 - HTML5先行者学习网
JTable(Object[][] rowData, Object[] columnNames)SAFHTML5中文学习网 - HTML5先行者学习网
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。SAFHTML5中文学习网 - HTML5先行者学习网
构建二维数组rowDataSAFHTML5中文学习网 - HTML5先行者学习网
通过上节博文“预编译”的学习,我们已经能够将SQL数据库读取至ResultSet 中。SAFHTML5中文学习网 - HTML5先行者学习网
《JDBC之PreparedStatement类中预编译的综合应用解析》SAFHTML5中文学习网 - HTML5先行者学习网
回顾如下:SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
 /** 查询并返回记录集 */SAFHTML5中文学习网 - HTML5先行者学习网
 public ResultSet getResultSet(String sql, Object[] objArr){SAFHTML5中文学习网 - HTML5先行者学习网
  getConnection();SAFHTML5中文学习网 - HTML5先行者学习网
  try {SAFHTML5中文学习网 - HTML5先行者学习网
   pStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);SAFHTML5中文学习网 - HTML5先行者学习网
   if(objArr!=null && objArr.length>0) {SAFHTML5中文学习网 - HTML5先行者学习网
    for (int i = 0; i < objArr.length; i++) {SAFHTML5中文学习网 - HTML5先行者学习网
     pStatement.setObject(i+1, objArr[i]);SAFHTML5中文学习网 - HTML5先行者学习网
    }SAFHTML5中文学习网 - HTML5先行者学习网
   }SAFHTML5中文学习网 - HTML5先行者学习网
   rSet = pStatement.executeQuery();SAFHTML5中文学习网 - HTML5先行者学习网
   //list = resultSetToList(rs);SAFHTML5中文学习网 - HTML5先行者学习网
  } catch (SQLException e) {SAFHTML5中文学习网 - HTML5先行者学习网
   e.printStackTrace();SAFHTML5中文学习网 - HTML5先行者学习网
  } finally {SAFHTML5中文学习网 - HTML5先行者学习网
   //close();SAFHTML5中文学习网 - HTML5先行者学习网
  }SAFHTML5中文学习网 - HTML5先行者学习网
  return rSet;SAFHTML5中文学习网 - HTML5先行者学习网
 }

SAFHTML5中文学习网 - HTML5先行者学习网
【注】只是与上节博客的方法名不同而已。。SAFHTML5中文学习网 - HTML5先行者学习网
现在,我们为了将ResultSet 转化为二维数组,写如下方法:SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
 /** 把结果集转成Object[][] */SAFHTML5中文学习网 - HTML5先行者学习网
 public Object[][] resultSetToObjectArray(ResultSet rs) {SAFHTML5中文学习网 - HTML5先行者学习网
  Object[][] data = null;SAFHTML5中文学习网 - HTML5先行者学习网
  try { SAFHTML5中文学习网 - HTML5先行者学习网
   rs.last();SAFHTML5中文学习网 - HTML5先行者学习网
   int rows = rs.getRow();SAFHTML5中文学习网 - HTML5先行者学习网
   data = new Object[rows][];  SAFHTML5中文学习网 - HTML5先行者学习网
   ResultSetMetaData md = rs.getMetaData();//获取记录集的元数据SAFHTML5中文学习网 - HTML5先行者学习网
   int columnCount = md.getColumnCount();//列数SAFHTML5中文学习网 - HTML5先行者学习网
   rs.first();SAFHTML5中文学习网 - HTML5先行者学习网
   int k = 0;SAFHTML5中文学习网 - HTML5先行者学习网
   while(rs.next()) {SAFHTML5中文学习网 - HTML5先行者学习网
    System.out.println("i"+k);SAFHTML5中文学习网 - HTML5先行者学习网
    Object[] row = new Object[columnCount];SAFHTML5中文学习网 - HTML5先行者学习网
    for(int i=0; i<columnCount; i++) {SAFHTML5中文学习网 - HTML5先行者学习网
     row[i] = rs.getObject(i+1).toString();SAFHTML5中文学习网 - HTML5先行者学习网
    }SAFHTML5中文学习网 - HTML5先行者学习网
    data[k] = row;SAFHTML5中文学习网 - HTML5先行者学习网
    k++;SAFHTML5中文学习网 - HTML5先行者学习网
   }SAFHTML5中文学习网 - HTML5先行者学习网
  } catch (Exception e) {SAFHTML5中文学习网 - HTML5先行者学习网
  }SAFHTML5中文学习网 - HTML5先行者学习网
  return data;SAFHTML5中文学习网 - HTML5先行者学习网
 } 

SAFHTML5中文学习网 - HTML5先行者学习网
并将这两个方法存至文件UserDAO.java中。SAFHTML5中文学习网 - HTML5先行者学习网
在Swing所在的Java文件中先实例化UserDAO:SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
 UserDAO userDAO = new UserDAO();

SAFHTML5中文学习网 - HTML5先行者学习网
即可将SQL数据转化为二维数组:SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
  Object[][] dataObjects = userDAO.resultSetToObjectArray(userDAO.getResultSet(SAFHTML5中文学习网 - HTML5先行者学习网
      "select id,username,password from t_userr", null));

SAFHTML5中文学习网 - HTML5先行者学习网
构建列名称 columnNamesSAFHTML5中文学习网 - HTML5先行者学习网
这个比较简单,只需要将列名称写入String数组即可。SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
 String[] tableStrings = { "id", "username", "password" };

SAFHTML5中文学习网 - HTML5先行者学习网
构建JTable的Model:SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
 jTable1.setModel(new DefaultTableModel(dataObjects, tableStrings));

SAFHTML5中文学习网 - HTML5先行者学习网
整体代码视图:SAFHTML5中文学习网 - HTML5先行者学习网
整体代码视图:SAFHTML5中文学习网 - HTML5先行者学习网
最终JTable效果图:SAFHTML5中文学习网 - HTML5先行者学习网

SAFHTML5中文学习网 - HTML5先行者学习网
SAFHTML5中文学习网 - HTML5先行者学习网

SAFHTML5中文学习网 - HTML5先行者学习网
SAFHTML5中文学习网 - HTML5先行者学习网

方法二:通过Model绑定该方法用到的构造方法为:SAFHTML5中文学习网 - HTML5先行者学习网
SAFHTML5中文学习网 - HTML5先行者学习网

JTable(TableModel dm)SAFHTML5中文学习网 - HTML5先行者学习网
构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。SAFHTML5中文学习网 - HTML5先行者学习网

设置Model路径SAFHTML5中文学习网 - HTML5先行者学习网

进入 JTable 控件的控制面板,点击model。SAFHTML5中文学习网 - HTML5先行者学习网

SAFHTML5中文学习网 - HTML5先行者学习网

选择Model来自代码。SAFHTML5中文学习网 - HTML5先行者学习网

SAFHTML5中文学习网 - HTML5先行者学习网

填写 model 的方法路径:包名.Java文件名.方法名。SAFHTML5中文学习网 - HTML5先行者学习网

为了调用方便,建议将方法设置为静态方法。SAFHTML5中文学习网 - HTML5先行者学习网

SAFHTML5中文学习网 - HTML5先行者学习网

 SAFHTML5中文学习网 - HTML5先行者学习网

写入Model 方法SAFHTML5中文学习网 - HTML5先行者学习网

在刚刚设置的路径下写入Model的方法,注意其返回类型为TableModel。SAFHTML5中文学习网 - HTML5先行者学习网

方法的写法与上面的大同小异,不再赘述。SAFHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
SAFHTML5中文学习网 - HTML5先行者学习网
 public static TableModel Member() {SAFHTML5中文学习网 - HTML5先行者学习网
  String[][] playerInfo = new String[80][8];SAFHTML5中文学习网 - HTML5先行者学习网
  BaseDAO bDao = new BaseDAO();SAFHTML5中文学习网 - HTML5先行者学习网
  String sql = "select id,realName,username,sex,phone,email,vocation,city from jdbctest";SAFHTML5中文学习网 - HTML5先行者学习网
  String[] ss = {};SAFHTML5中文学习网 - HTML5先行者学习网
  ArrayList<HashMap<Object, Object>> list = bDao.Query(sql, ss);SAFHTML5中文学习网 - HTML5先行者学习网
//  bDao.AllArray(list);SAFHTML5中文学习网 - HTML5先行者学习网
  int i = 0, j = 0;SAFHTML5中文学习网 - HTML5先行者学习网
  for (HashMap<Object, Object> maps : list) {SAFHTML5中文学习网 - HTML5先行者学习网
   Set<Object> keysObjects = maps.keySet();SAFHTML5中文学习网 - HTML5先行者学习网
   for (Object kObject : keysObjects) {SAFHTML5中文学习网 - HTML5先行者学习网
    playerInfo[i][j] = maps.get(kObject).toString();SAFHTML5中文学习网 - HTML5先行者学习网
    j++;SAFHTML5中文学习网 - HTML5先行者学习网
   }SAFHTML5中文学习网 - HTML5先行者学习网
   i++;SAFHTML5中文学习网 - HTML5先行者学习网
   j = 0;SAFHTML5中文学习网 - HTML5先行者学习网
  }SAFHTML5中文学习网 - HTML5先行者学习网
  String[] Names = { "id", "username", "sex", "phone","vocation","email","realName",   "city" };SAFHTML5中文学习网 - HTML5先行者学习网
  DefaultTableModel dModel = new DefaultTableModel(playerInfo, Names);SAFHTML5中文学习网 - HTML5先行者学习网
  return (TableModel)dModel;SAFHTML5中文学习网 - HTML5先行者学习网
 }

SAFHTML5中文学习网 - HTML5先行者学习网
JTable 效果SAFHTML5中文学习网 - HTML5先行者学习网

SAFHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助