Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法
在 MyEclipse 的可视化 Swing 中,有 JTable 控件。
JTable 用来显示和编辑常规二维单元表。
那么,如何将 数据库SQL中的数据绑定至JTable中呢?
在这里,提供两种方法。
JTable的构造方法
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。
JTable(TableModel dm)
构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。
必要的准备工作
方法一:通过二维数组绑定
JTable(Object[][] rowData, Object[] columnNames)
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。
构建二维数组rowData
/** 查询并返回记录集 */
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;
}
【注】只是与上节博客的方法名不同而已。。
/** 把结果集转成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中。
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路径
写入Model 方法
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 效果
Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法的更多相关文章
- 利用来JS控制页面控件显示和隐藏有两种方法
利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一: 1 2 document.getEle ...
- PyQt(Python+Qt)学习随笔:QTableWidget中表格各列平均分配宽度的两种方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget表格部件中,如果需要实现表格中各列要占满部件中的可用空间,同时实现各列平分 ...
- Webform中Repeater控件--绑定嵌入C#代码四种方式
网页里面嵌入C#代码用的是<% %>,嵌入php代码<?php ?> 绑定数据的四种方式: 1.直接绑定 <%#Eval("Code") %> ...
- c#中DropDownList控件绑定枚举数据
c# asp.net 中DropDownList控件绑定枚举数据 1.枚举(enum)代码: private enum heros { 德玛 = , 皇子 = , 大头 = , 剑圣 = , } 如果 ...
- .Net平台Winform两个ComboBox控件绑定同一个数据源
今天WINFROM编程遇到这么一个问题:是有关WINFORM中两个comboBox控件绑定同一个数据源的问题,在窗体的界面上有两个comboBox,我在Form1_Load中对他们做了数据绑定(具体代 ...
- 给Repeater控件里添加序号的5种方法
Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的 ...
- android 让一个控件按钮居于底部的几种方法
android 让一个控件按钮居于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_ ...
- [Android] Android 让UI控件固定于底部的几种方法
Android 让UI控件固定于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_p ...
- [转]android 让一个控件按钮居于底部的几种方法
本文转自:http://www.cnblogs.com/zdz8207/archive/2012/12/13/2816906.html android 让一个控件按钮居于底部的几种方法 1.采用lin ...
随机推荐
- php配置文件php.ini 中文版
;;;;;;;;;;;;;;;; 简介 ;;;;;;;;;;;;;;;;; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众多资料以后,结合自己的理解,增加了许多内容,; 包括在原有 ph ...
- 类和对象:给大家介绍对象 - 零基础入门学习Python036
类和对象:给大家介绍对象 让编程改变世界 Change the world by program 我们之前说过Python无处不对象,Python到处都是对象,然后你会发现很多童鞋其实并不知道对象是什 ...
- C语言结构体(struct)常见使用方法
基本定义:结构体,通俗讲就像是打包封装,把一些变量有共同特征(比如同属于某一类事物的属性)的变量封装在内部,通过一定方法访问修改内部变量. 结构体定义: 第一种:只有结构体定义 struct stuf ...
- KEIl混合编程步骤详解
一.在keil中C函数调用汇编函数: 主要思路:先用C来编写所要实现及调用的汇编函数,然后由此C函数生成相应的汇编代码,这样我们就可以不用去管混合编程调用时复杂的函数接口,我们只要修改相应汇编函数中的 ...
- NSIS操作系统环境变量
手头有个项目需要修改PATH变量 需要!include "EnvVarUpdate.nsh" 以下是NSIS脚本代码 ; Script generated by the HM NI ...
- Cmake find_package()相关
也就是find_package可以帮助直接找到库的头文件和库文件(.lib,dll .etc) References: http://blog.csdn.net/dbzhang800/article/ ...
- genymotion+Oracle VM VirtualBox + eclipse + appium 脚本运行慢解决步骤
genymotion+Oracle VM VirtualBox + eclipse + appium 脚本运行慢解决步骤 1.lenove 机器启动时按F1 进入bios 设置,设置cpu virtu ...
- pyqt记录内容(音乐播放器)
#这是UI文件 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'AudioPlayerDia ...
- C++ Primer 学习笔记_84_模板与泛型编程 --模板特化
模板与泛型编程 --模板特化 引言: 我们并不总是能够写出对全部可能被实例化的类型都最合适的模板.某些情况下,通用模板定义对于某个类型可能是全然错误的,通用模板定义或许不能编译或者做错误的事情;另外一 ...
- [置顶] IOS7状态栏StatusBar官方标准适配方法
IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...