SQL.ResultSet 获得列名

本文介绍两种将数据库查询结果展示到Java Swing中的JTable的方法。首先使用`ResultSet`获取表列名,然后创建`DefaultTableModel`并填充数据到表格中。此示例适用于需要展示动态查询结果的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1

ResultSet rs = stmt.executeQuery("SELECT * FROM TABLE");

ResultSetMetaData rsmd = rs.getMetaData();

int count=rsmd.getColumnCount();

String[] name=new String[count];

for(int i=0;i<count;i++)

name[i]=rsmd.getColumnName(i+1);

方法2

DefaultTableModel dtm1 = new DefaultTableModel();
JTable tb1 = new JTable(dtm1);
JScrollPane sp1 = new JScrollPane(tb1);

    ResultSet rs = executeQuery( sqlCode ); //获得结果集
    int row = recCount( rs );     //获得结果集中有几行数据
   ResultSetMetaData rsm =rs.getMetaData(); //获得列集
   int col = rsm.getColumnCount();   //获得列的个数
    String colName[] = new String[col];
    //取结果集中的表头名称, 放在colName数组中
    for (int i = 0; i < col; i++) {   -->第一列,从1开始.所以获取列名,或列值,都是从1开始
    colName[i] = rsm.getColumnName( i + 1 ); -->获得列值的方式一:通过其序号
    }//End for
   rs.beforeFirst();
   String data[][] = new String[row][col];
    //取结果集中的数据, 放在data数组中
    for (int i = 0; i < row; i++) {
     rs.next();
     for (int j = 0; j < col; j++) {
      data[i][j] = rs.getString (j + 1);
      //System.out.println (data[i][j]);
       }
    }//End for
    fdtm.setDataVector (data, colName);
   
联邦SQL测试失败: Error while executing SQL "select u."user_id", t."task_name" from MYSQL."sys_user" u join PGSQL."ops_task" t on u."user_id" = t."task_id" limit 1": Error while compiling generated Java code: public org.apache.calcite.linq4j.Enumerable bind(final org.apache.calcite.DataContext root) { final org.apache.calcite.runtime.ResultSetEnumerable enumerable = org.apache.calcite.runtime.ResultSetEnumerable.of((javax.sql.DataSource) root.getRootSchema().getSubSchema("MYSQL").unwrap(javax.sql.DataSource.class), "SELECT `user_id`\r\nFROM `sys_user`\r\nORDER BY `user_id` IS NULL, `user_id`", new org.apache.calcite.linq4j.function.Function1() { public org.apache.calcite.linq4j.function.Function0 apply(final java.sql.ResultSet resultSet) { return new org.apache.calcite.linq4j.function.Function0() { public Object apply() { try { final Object value; value = resultSet.getLong(1); if (resultSet.wasNull()) { value = null; } return value; } catch (java.sql.SQLException e) { throw new RuntimeException( e); } } } ; } public Object apply(final Object resultSet) { return apply( (java.sql.ResultSet) resultSet); } } ); enumerable.setTimeout(root); final org.apache.calcite.runtime.ResultSetEnumerable enumerable0 = org.apache.calcite.runtime.ResultSetEnumerable.of((javax.sql.DataSource) root.getRootSchema().getSubSchema("PGSQL").unwrap(javax.sql.DataSource.class), "SELECT \"task_name\", CAST(\"task_id\" AS BIGINT) AS \"task_id0\"\r\nFROM \"ops_task\"\r\nORDER BY 2", new org.apache.calcite.linq4j.function.Function1() { public org.apache.calcite.linq4j.function.Function0 apply(final java.sql.ResultSet resultSet) { return new org.apache.calcite.linq4j.function.Function0() { public Object apply() { try { final Object[] values = new Object[2]; values[0] = resultSet.getObject(1); values[1] = resultSet.getLong(2); if (resultSet.wasNull()) { values[1] = null; } return values; } catch (java.sql.SQLException e) { throw new RuntimeException( e); } } } ; } public Object apply(final Object resultSet) { return apply( (java.sql.ResultSet) resultSet); } } ); enumerable0.setTimeout(root); final org.apache.calcite.linq4j.Enumerable _inputEnumerable = org.apache.calcite.linq4j.EnumerableDefaults.mergeJoin(enumerable, enumerable0, new org.apache.calcite.linq4j.function.Function1() { public long apply(long left) { return left; } public Object apply(Long left) { return apply( left.longValue()); } public Object apply(Object left) { return apply( (Long) left); } } , new org.apache.calcite.linq4j.function.Function1() { public long apply(Object[] right) { return org.apache.calcite.runtime.SqlFunctions.toLong(right[1]); } public Object apply(Object right) { return apply( (Object[]) right); } } , null, new org.apache.calcite.linq4j.function.Function2() { public Object[] apply(Long left, Object[] right) { return new Object[] { left, right[0], right[1]}; } public Object[] apply(Object left, Object right) { return apply( (Long) left, (Object[]) right); } } , org.apache.calcite.linq4j.JoinType.INNER, new java.util.Comparator(){ public int compare(Long v0, Long v1) { final int c; c = org.apache.calcite.runtime.Utilities.compare(v0, v1); if (c != 0) { return c; } return 0; } public int compare(Object o0, Object o1) { return this.compare((Long) o0, (Long) o1); } }, null).take(1); return new org.apache.calcite.linq4j.AbstractEnumerable(){ public org.apache.calcite.linq4j.Enumerator enumerator() { return new org.apache.calcite.linq4j.Enumerator(){ public final org.apache.calcite.linq4j.Enumerator inputEnumerator = _inputEnumerable.enumerator(); public void reset() { inputEnumerator.reset(); } public boolean moveNext() { return inputEnumerator.moveNext(); } public void close() { inputEnumerator.close(); } public Object current() { final Object[] current = (Object[]) inputEnumerator.current(); final Object input_value = current[0]; final Object input_value0 = current[1]; return new Object[] { input_value, input_value0}; } }; } }; } public Class getElementType() { return java.lang.Object[].class; }
最新发布
08-02
``` package jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 执行dql 语句 */ public class JBDCDemo5 { public static void main(String[] args) throws SQLException { Connection connection = DBUtil.getConnection(); try { Statement statement = connection.createStatement();{ } String sql = "SELECT id,name,salary,title " + "FROM user " ; ResultSet rs =statement.executeQuery(sql); while(rs.next()){ int id=rs.getInt("id"); String name=rs.getString("name"); double salary=rs.getDouble("salary"); String title=rs.getString("title"); System.out.println(id+","+name+","+salary+","+title); } }catch (SQLException e){ e.printStackTrace(); } } }```"C:\Program Files\Java\jdk-17\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2024.3.4\lib\idea_rt.jar=62944" -Dfile.encoding=UTF-8 -classpath D:\java-student\JSD2502_SSM\JDBC\target\classes;C:\Users\2003q\.m2\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar;C:\Users\2003q\.m2\repository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar jdbc.JBDCDemo5 java.sql.SQLSyntaxErrorException: Unknown column 'name' in 'field list' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1218) at jdbc.JBDCDemo5.main(JBDCDemo5.java:21)
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值