`

ResultSetMetaData的使用

SQL 
阅读更多

ResultSetMetaData能够通过ResultSet分析出结果集的元素。

 

ResultSetMetaData meta = rs.getMetaData();

通过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。

可以将ResultSet放入Map(key:列名 value:列值)

用反射ResultSetMetaData将查询结果读入对象中(简单的O/RMapping

    1)SQL语句中列别名和要读入的对象属性名一样;

    2)通过ResultSetMetaData获得结果列数和列别名;

    3)通过反射将对象的所有setXxx方法找到;

    4)3)找到的方法setXxx2)找到的列别名进行匹配(即方法中的xxx于列别名相等);

    5)由上一步找到的方法和列别名对应关系进行赋值

    Method.invoke(obj, rs.getObject(columnAliasName));

 

 

public class ResultSetMetaDataTest {

   

    public static void main(String[] args) throws SQLException {

       List<Map<String, Object>> datas = read("select id, name as n from user where id < 5");

       System.out.println(datas);

    }

 

    static List<Map<String, Object>> read(String sql) throws SQLException {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           conn = JdbcUtils.getConnection();

           ps = conn.prepareStatement(sql);

           rs = ps.executeQuery();

           ResultSetMetaData rsmd = rs.getMetaData();

           int count = rsmd.getColumnCount();//列的数目

           String[] colNames = new String[count];

           for (int i = 1; i <= count; i++) {

              // System.out.print(rsmd.getColumnClassName(i) + "\t");

              // System.out.print(rsmd.getColumnName(i) + "\t");

              // System.out.println(rsmd.getColumnLabel(i));

              colNames[i - 1] = rsmd.getColumnLabel(i);//将列的名称放到一个数组当中去。

           }

           List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();

 

           while (rs.next()) {

              //每一行

              Map<String, Object> data = new HashMap<String, Object>();

              //data中的Key为列的名称,Value是些列的值

              for (int i = 0; i < colNames.length; i++) {

                  data.put(colNames[i], rs.getObject(colNames[i]));

              //将列的名称与列的值放到map当中去,每一行map中的元素大小就是列的数目

              }

              datas.add(data);//将此行放到List当中去。         }

           return datas;

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

 

}

 

分享到:
评论

相关推荐

    Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData

    Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet...

    获得结果集的字段名称_ResultSet的属性要调用ResultSetMetaData的方法

    通过调用ResultSet对象的getMetaData()方法,可以获取ResultSetMetaData对象,然后使用该对象的方法来获取结果集的字段名称和其他信息。 下面是一些常用的ResultSetMetaData方法: 1. getColumnCount():返回...

    java读取table列名

    在本文中,我们将深入探讨如何使用`ResultSetMetaData`来获取表的列名。 首先,要使用`ResultSetMetaData`,我们需要执行SQL查询并获取`ResultSet`。一个简单的例子是查询整个表,例如: ```java Connection conn ...

    java使用jdbc将数据库数据导出到csv文件.pdf

    这可以通过 ResultSetMetaData 对象来实现。我们可以使用 getColumnCount() 方法来获取列数,然后使用 getColumnLabel() 方法来获取每个列的名称。 将数据写入 CSV 文件 在获取了数据库数据和元数据信息后,我们...

    JAVA100例之实例57 结果集元数据

    在实际应用中,了解并使用ResultSetMetaData可以增强对查询结果的理解,从而编写出更健壮、适应性强的代码。例如,在动态生成表格或报表时,可以根据元数据来决定列的显示格式,或者在用户界面中提供适当的输入控件...

    Mybatis通用操作数据库方法类总结

    在项目中用到myBatis作为orm框架,与spring结合,通常的... import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; i

    Native SQL查询 (使用SQLQuery).doc

    如果要避免过多的使用 ResultSetMetadata,可以使用 addScalar() 方法指定返回值的类型,例如: sess.createSQLQuery("SELECT * FROM CATS") .addScalar("ID", Hibernate.LONG) .addScalar("NAME", Hibernate....

    java导出数据.pdf

    接着,程序使用 ResultSetMetaData 对象来获取数据的元数据,并使用 HSSFRow 和 HSSFCell 对象来将数据写入到 Excel 文件中。 在将数据写入到 Excel 文件中的过程中,程序使用了多种技术来处理不同的数据类型。例如...

    Java的Jtable、从数据库取数据显示在表格中.pdf

    Java 中使用 JTable 显示数据库数据 Java 中使用 JTable 显示数据库数据是一个...使用 Java 的 JTable 显示数据库数据需要连接到数据库,读取数据,使用 ResultSetMetaData 获取列信息,并将数据显示在 JTable 中。

    表字段描述依赖包

    在ORMlite框架中,当执行SQL查询并获取ResultSet时,可以使用ORMlite提供的工具方法来获取ResultSetMetaData。这个信息对于理解数据库表结构至关重要,比如字段名、字段类型(如整型、字符串、日期等)、字段顺序...

    Java数据库编程宝典2

    10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性需求 11.3 设计数据库 11.3.1 处理会员登录 11.3.2 会员注册 11.3.3 数据...

    Java数据库编程宝典4

    10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性需求 11.3 设计数据库 11.3.1 处理会员登录 11.3.2 会员注册 11.3.3 数据...

    Java数据库编程宝典1

    10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性需求 11.3 设计数据库 11.3.1 处理会员登录 11.3.2 会员注册 11.3.3 数据...

    Java数据库编程宝典3

    10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性需求 11.3 设计数据库 11.3.1 处理会员登录 11.3.2 会员注册 11.3.3 数据...

    使用jdbc的高级数据库操作

    9. **结果集元数据(ResultSetMetaData)**:`ResultSetMetaData`提供关于结果集中列的信息,如列名、数据类型和列大小,有助于动态生成查询结果的处理逻辑。 10. **异常处理**:良好的异常处理策略是任何数据库...

    jsp数据库脱裤脚本,脱各种数据库

    12. 使用ResultSetMetaData对象可以获取查询结果的元数据,例如列名、数据类型等。 13. 在JSP中,使用try-catch语句可以捕获异常,例如数据库连接异常。 14. 使用finally语句可以确保资源的释放,例如关闭数据库...

    高级JDBC的使用方法

    - 使用`ResultSetMetaData`获取元数据信息,如列数、列名、数据类型等。 7. **存储过程的调用**: - 使用CallableStatement调用数据库的存储过程,传入参数和接收返回值。 8. **性能优化**: - 使用...

    jdbc使用参考手册

    - **结果集元数据**:`ResultSetMetaData`对象提供列的相关信息。 - **JDBC逃逸**:防止SQL注入的编码技术。 ### 10. 示例代码 ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = ...

    java对数据库操作常用对象及方法整合[归类].pdf

    Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了关于整个数据库的信息,包括表名、表的...

Global site tag (gtag.js) - Google Analytics