怎样把连接查询的结果集放到JTable中 比如一个employ表,一个dept表。我要把两个表的部分字段组合在一起,然后放到Jtable中。怎么解决?一个employimpl 一个deptimpl。 但是两个返回的分别是employ 和 dept 啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Jtable 是个什么玩意啊,也不说清楚 JTable是java里面的一个类。就是一个表格。 在SQL语句上下功夫,LZ应该会把一张表放入JTable中吧。 你可以通过SQL语句把主外键有关联的2张表拼成一张表。返回ResultSet类型,然后拆成2维数组或者Vector<Vector<Object>> ,再赋给JTable.select a.你需要的字段,b.你需要的字段 from a,b where a.id=b.id /** * @author Administrator * * connection:数据库的连接 * sql:要查询的sql语句 * name:希望在表格每列顶行显示的文字 * */public class DisplayDialog extends JDialog {//假设表格在JDialog上 Statement stmt = null; DisplayDialog(Connection connection, String sql, Object[] name) { this.setBounds(200, 200, 400, 500); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setVisible(true); try { stmt = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去 ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容, ResultSet rs = stmt.executeQuery(sql); rs.last();// 指到定位到最后一行 int row = rs.getRow();// 获得总行数 rs.beforeFirst();// 定位到开始 ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数 int col = rsmd1.getColumnCount(); // 计算字段个数 Object a[][] = new Object[row][col]; JTable table = new JTable(a, name); for (int index = 0; rs.next(); index++) for (int j = 0; j < col; j++) a[index][j] = rs.getString(j + 1); getContentPane().removeAll(); add(new JScrollPane(table), BorderLayout.CENTER); validate(); rs.close(); } catch (SQLException e) { System.out.println("SQL语句无效"); add(new JLabel("SQL语句无效")); e.printStackTrace(); } }} //----------------------------------------------------------------------------------- Statement stmt = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去 ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容, ResultSet rs = stmt.executeQuery(sql);//开始执行查询语句,结果存储在rs中 rs.last();// 指到定位到最后一行 int row = rs.getRow();// 获得总行数 rs.beforeFirst();// 定位到开始 ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数 int col = rsmd1.getColumnCount(); // 计算字段个数 Object a[][] = new Object[row][col];//确定表格存储数据的大小 JTable table = new JTable(a, name);//建立表格 for (int index = 0; rs.next(); index++)//使用查询返回的结果初始化表格 for (int j = 0; j < col; j++) a[index][j] = rs.getString(j + 1); //-------------------------------------------------------------------------------- public JTable createJTableFromSQL(Connection connection,String sql , Object[] name)throws Exception{ Statement stmt = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去 ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容, ResultSet rs = stmt.executeQuery(sql);//开始执行查询语句,结果存储在rs中 rs.last();// 指到定位到最后一行 int row = rs.getRow();// 获得总行数 rs.beforeFirst();// 定位到开始 ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数 int col = rsmd1.getColumnCount(); // 计算字段个数 Object a[][] = new Object[row][col];//确定表格存储数据的大小 JTable jTable = new JTable(a, name);//建立表格 for (int index = 0; rs.next(); index++)//使用查询返回的结果初始化表格 for (int j = 0; j < col; j++) a[index][j] = rs.getString(j + 1); return jTable; } LS代码给的很详细,不过个人给点建议。自从学了集合之后,数组这东西基本上就放弃使用了。因为数组定长有很多局限性,或者说浪费很多操作。比如说ls int row = rs.getRow();// 获得总行数因为你要定义2维数组,你就必须获得它的长度。因为集合不定长,只要不断往里加就可以。所以在做解决类似问题时,用集合会远比用数组方便哈。个人建议~ 一个关于String的问题 这样创建对象有什么区别? Java编程实现FTP下载 关于Bootstrap引导类加载的.jar文件 角色生成器详细设计 Java API问题 weblogic和jbulider整和后出现的问题!问题应该比较容易,我给50分! 请问JAVA中的构造器是什么意思? 在何处可下载有关java类库知识的内容? 问一下在那里可以下到关于java的帮助,类似MSDN的那种帮助!谢谢了 java swing 如何实现拖动文件到程序内识别路径 匿名类数组,会造成内存泄漏吗?
/**
* @author Administrator *
* connection:数据库的连接
* sql:要查询的sql语句
* name:希望在表格每列顶行显示的文字
*
*/
public class DisplayDialog extends JDialog {//假设表格在JDialog上
Statement stmt = null;
DisplayDialog(Connection connection, String sql,
Object[] name) {
this.setBounds(200, 200, 400, 500);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
try {
stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去
ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容,
ResultSet rs = stmt.executeQuery(sql); rs.last();// 指到定位到最后一行
int row = rs.getRow();// 获得总行数
rs.beforeFirst();// 定位到开始
ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数
int col = rsmd1.getColumnCount(); // 计算字段个数
Object a[][] = new Object[row][col];
JTable table = new JTable(a, name);
for (int index = 0; rs.next(); index++)
for (int j = 0; j < col; j++)
a[index][j] = rs.getString(j + 1);
getContentPane().removeAll();
add(new JScrollPane(table), BorderLayout.CENTER);
validate();
rs.close();
} catch (SQLException e) {
System.out.println("SQL语句无效");
add(new JLabel("SQL语句无效"));
e.printStackTrace();
}
}
}
//-----------------------------------------------------------------------------------
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去
ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容,
ResultSet rs = stmt.executeQuery(sql);//开始执行查询语句,结果存储在rs中
rs.last();// 指到定位到最后一行
int row = rs.getRow();// 获得总行数
rs.beforeFirst();// 定位到开始
ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数
int col = rsmd1.getColumnCount(); // 计算字段个数
Object a[][] = new Object[row][col];//确定表格存储数据的大小
JTable table = new JTable(a, name);//建立表格
for (int index = 0; rs.next(); index++)//使用查询返回的结果初始化表格
for (int j = 0; j < col; j++)
a[index][j] = rs.getString(j + 1);
//--------------------------------------------------------------------------------
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去
ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容,
ResultSet rs = stmt.executeQuery(sql);//开始执行查询语句,结果存储在rs中
rs.last();// 指到定位到最后一行
int row = rs.getRow();// 获得总行数
rs.beforeFirst();// 定位到开始
ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数
int col = rsmd1.getColumnCount(); // 计算字段个数
Object a[][] = new Object[row][col];//确定表格存储数据的大小
JTable jTable = new JTable(a, name);//建立表格
for (int index = 0; rs.next(); index++)//使用查询返回的结果初始化表格
for (int j = 0; j < col; j++)
a[index][j] = rs.getString(j + 1);
return jTable;
}
int row = rs.getRow();// 获得总行数因为你要定义2维数组,你就必须获得它的长度。
因为集合不定长,只要不断往里加就可以。所以在做解决类似问题时,用集合会远比用数组方便哈。个人建议~