欢迎来到山村网

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

2019-03-02 10:29:41浏览:75 来源:山村网   
核心摘要:以下是对可视化Swing中JTable控件绑定SQL数据源的两种方法进行了详细的分析介绍,需要的朋友可以过来参考一下在 MyEclipse 的可
以下是对可视化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、默认的列模型和默认的选择模型对其进行初始化。

以下,我们就通过这两个构造方法来将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.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 转化为二维数组,写如下方法:

复制代码 代码如下:

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


整体代码视图:
整体代码视图:
最终JTable效果图:



方法二:通过Model绑定该方法用到的构造方法为:

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

设置Model路径

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

选择Model来自代码。

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

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

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

(责任编辑:豆豆)
下一篇:

c#中如何在form的webbrowser控件中获得鼠标坐标

上一篇:

JDBC之PreparedStatement类中预编译的综合应用解析

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com