可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析
在 MyEclipse 的可视化 Swing 中,有 JTable 控件。 以下,我们就通过这两个构造方法来将JTable绑定到SQL数据库。 必要的准备工作 复制代码 代码如下: /** 查询并返回记录集 */ 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)); 整体代码视图: 整体代码视图: 方法二:通过Model绑定该方法用到的构造方法为: JTable(TableModel dm) 进入 JTable 控件的控制面板,点击model。 选择Model来自代码。 填写 model 的方法路径:包名.Java文件名.方法名。 为了调用方便,建议将方法设置为静态方法。 在刚刚设置的路径下写入Model的方法,注意其返回类型为TableModel。 方法的写法与上面的大同小异,不再赘述。 复制代码 代码如下: public static TableModel Member() { String[][] playerInfo = new String[80][8]; BaseDAO bDao = new BaseDAO(); String sql = "select id,realName,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","sex","phone","vocation","email","realName", "city" }; DefaultTableModel dModel = new DefaultTableModel(playerInfo,Names); return (TableModel)dModel; } JTable 效果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |