java显示数据库 控件_Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法...

本文介绍了在MyEclipse的Swing环境中,如何将数据库SQL数据绑定到JTable控件的两种方法:一是通过二维数组,二是直接设置Model。详细讲解了构建二维数组、设置列名以及创建TableModel的过程。
摘要由CSDN通过智能技术生成

在 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 中。

回顾如下:

/** 查询并返回记录集 */

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

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));

整体代码视图:

8f4bc63c20732dbd30f2ebdf366e7f60.png

最终JTable效果图:

55c9bdab363ab4bb082dd7b72004e25c.png

方法二:通过Model绑定

该方法用到的构造方法为:

JTable(TableModel dm)

构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

设置Model路径

进入 JTable 控件的控制面板,点击model。

e0ceb22880d832f6a20f868967fdfdf5.png

选择Model来自代码。

5e8759c8b8cf953c340475fc5ee3821e.png

填写 model 的方法路径:包名.Java文件名.方法名。

为了调用方便,建议将方法设置为静态方法。

f348dbe45e6e54c6783fca4991fee64b.png

写入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> list = bDao.Query(sql, ss);

//bDao.AllArray(list);

int i = 0, j = 0;

for (HashMap maps : list) {

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

161cc40a3be7e312d875567923558494.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值