JDBC之ResultSetMetaData

JDBC之ResultSetMetaData1 ResultSetMet rs getMetaData 2 通过 ResultSetMet 可以获得结果有几列 各列名 各列别名 各列类型等 nbsp 3 可以将 ResultSet 放入 Map key 列名 value 列值 具体代码如下 packagecn itcast jdbc importjava sql Connection impo

1、ResultSetMetaData meta = rs.getMetaData();

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

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

具体代码如下:

package cn.itcast.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; / * 测试结果集元信息 */ public class ResultSetMetaDataTest { / * 测试从数据库中读取数据 * @throws SQLException */ @Test public void testRead() throws SQLException { List 
    
      > datas = read("select id, name as n, birthday from user where id < 5"); System.out.println(datas); } / * 获取数据 * @param sql * @return * @throws SQLException */ static List 
     
       > 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 ++) { //这里可以正确打印出MySQL的数据类型 System.out.print(rsmd.getColumnClassName(i) + "\t"); System.out.print(rsmd.getColumnType(i) + "\t"); System.out.print(rsmd.getColumnTypeName(i) + "\t"); //获取列名 System.out.print(rsmd.getColumnName(i) + "\t"); //获取列的别名 System.out.println(rsmd.getColumnLabel(i)); //将查询的列的别名封装进数组中 colNames[i - 1] = rsmd.getColumnLabel(i); } List 
      
        > datas = new ArrayList 
       
         >(); while(rs.next()) { //用于存储每一行的数据 Map 
        
          data = new HashMap 
         
           (); for(int i = 0; i < colNames.length; i++) { data.put(colNames[i], rs.getObject(colNames[i])); } datas.add(data); } return datas; } finally { JdbcUtils.free(rs, ps, conn); } } } 
          
         
        
       
      
    

测试结果:

java.lang.Integer 4 INT id id
java.lang.String 12 VARCHAR name n
java.sql.Date 91 DATE birthday birthday
[{birthday=2017-06-30, id=1, n=zhangsan}, {birthday=2017-06-06, id=2, n=lisi}, {birthday=2017-05-30, id=3, n=wangwu}, {birthday=1987-01-01, id=4, n=name1}]











版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208370.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:44
下一篇 2026年3月19日 上午11:44


相关推荐

  • CMOS图像传感器基础知识和参数理解「建议收藏」

    CMOS图像传感器基础知识和参数理解「建议收藏」CMOS图像传感器的工作原理:每一个CMOS像素都包括感光二极管(Photodiode)、浮动式扩散层(Floatingdiffusionlayer)、传输电极门(Transfergate)、起放大作用的MOSFET、起像素选择开关作用的M0SFET.在CMOS的曝光阶段,感光二极管完成光电转换,产生信号电荷,曝光结束后,传输电极门打开,信号电荷被传送到浮动式扩散层,由起放大作用的MOSFET电极门来拾取,电荷信号转换为电压信号。所以这样的CMOS也就完成了光电转换、电荷电压转换、模拟数

    2022年5月17日
    150
  • linux复制多个文件到另一个文件命令_怎么替换安装目录下的文件

    linux复制多个文件到另一个文件命令_怎么替换安装目录下的文件使用参数-R

    2022年8月23日
    12
  • osx安装失败_OSX

    osx安装失败_OSX目录1.MacPorts是什么2.MacPorts安装方法2.1使用安装器安装2.2源码安装2.3同步repositorytree和获取最新package3.更新失败的解决方法4.ports使用…

    2025年11月21日
    6
  • idea 2022 3.2激活码[最新免费获取]「建议收藏」

    (idea 2022 3.2激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1M2OME2TZY-eyJsaWN…

    2022年3月13日
    153
  • laravel之跨域请求(一)「建议收藏」

    laravel之跨域请求(一)「建议收藏」laravel之跨域请求(一)

    2022年4月24日
    49
  • getchar用法[通俗易懂]

    getchar用法[通俗易懂]getchar用法1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3. getchar()是在输入缓冲区顺序读入一个字符(包括空…

    2022年10月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号