功能:
- 包含了查询后的结果集的相关信息
说明:
- 本文为了代码结构清晰 采用的是try-with-resource结构,请在java7下使用(或者自己改成传统模式)
- 具体使用请看例子,更多内容请看例子后的扩展阅读
- 本例演示了通用型结果集遍历
部分API:
返回类型 | 方法名称 | 说明 |
---|---|---|
int | getColumnCount() | 结果集对象存在几个字段 (用于批量执行) |
String | getColumnLabel(int column) | 获得指定列的别名 |
String | getColumnName(int column) | 获得指定列的字段名 |
String | getColumnTypeName(int column) | 获得指定列的类型名称 |
String | getTableName(int column) | 获得指定列数据表表名 |
程序演示: 放大
- package com.cxy.jdbc;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @author cxy @ www.cxyapi.com
- */
- public class ResultSetMetaDataTest
- {
- public static void main(String[] args) throws Exception
- {
- Class.forName("com.mysql.jdbc.Driver");
- try
- (
- Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
- PreparedStatement pstmt=con.prepareStatement("select id_ as 主键,name_ as 姓名,sex as 性别 from t_student",
- ResultSet.TYPE_SCROLL_SENSITIVE,
- ResultSet.CONCUR_UPDATABLE);
- ResultSet rs=pstmt.executeQuery();
- )
- {
- ResultSetMetaData rsm=rs.getMetaData();
- System.out.println("t_student表有几个字段?"+rsm.getColumnCount());
- System.out.println("第一个字段所在表?"+rsm.getTableName(1));
- System.out.println("========================");
- //遍历一个不知道结构的表
- System.out.println("通用型遍历结果集:");
- System.out.println("1.获得所有的列名");
- int colNum=rsm.getColumnCount();
- String[] colName=new String[colNum]; //字段名
- String[] colLabel=new String[colNum]; //别名
- for(int i=1;i<=colNum;i++)
- {
- colName[i-1]=rsm.getColumnName(i);
- colLabel[i-1]=rsm.getColumnLabel(i);
- }
- System.out.println(Arrays.asList(colName));
- System.out.println(Arrays.asList(colLabel));
- System.out.println("------------------------");
- System.out.println("2.遍历并封装");
- //把结果集封装成List<Map<String,String>>
- List<Map<String,String>> dbData=new ArrayList<>();
- while(rs.next())
- {
- Map<String,String> one = new HashMap<String, String>();
- for(int i=1;i<=colNum;i++)
- {
- one.put(colLabel[i-1], rs.getString(i));
- }
- dbData.add(one);
- }
- //System.out.println(dbData);
- for(Map<String,String> one : dbData)
- {
- System.out.println(one);
- }
- }catch(SQLException e)
- {
- System.out.println("数据库操作出现异常");
- }
- }
- }
运行结果截图:
转载于:https://blog.51cto.com/congwa/1163839