java_jdbc_利用结果集元数据将查询结果封装为map_MetaData

package cn.itcast.batch;



import java.sql.Connection;

import java.sql.ParameterMetaData;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



import cn.itcast.JdbcUtils;



public class ResultSetMetaData {



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

		// TODO Auto-generated method stub

		List<Map<String, Object>> list = read2("select username,password from t_user where id <5 ");

		System.out.println(list);

	}



	// 一行数据

	public static 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();



			java.sql.ResultSetMetaData rsmd = rs.getMetaData();



			int count = rsmd.getColumnCount();

			String[] colNames = new String[count];



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

				// System.out.println(rsmd.getColumnClassName(i) + " "

				// + rsmd.getColumnName(i) + " " + rsmd.getColumnLabel(i));

				colNames[i - 1] = rsmd.getColumnName(i);



			}

			Map<String, Object> data = null;

			if (rs.next()) {

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

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

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

				}

			}

			return data;

		} finally {

			JdbcUtils.free(rs, ps, conn);

		}

	}



	// 多行行数据

	public static List<Map<String, Object>> read2(String sql)

			throws SQLException {

		Connection conn = null;

		PreparedStatement ps = null;

		ResultSet rs = null;

		try {

			conn = JdbcUtils.getConnection();

			ps = conn.prepareStatement(sql);

			rs = ps.executeQuery();



			java.sql.ResultSetMetaData rsmd = rs.getMetaData();



			int count = rsmd.getColumnCount();

			String[] colNames = new String[count];



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

				// System.out.println(rsmd.getColumnClassName(i) + " "

				// + rsmd.getColumnName(i) + " " + rsmd.getColumnLabel(i));

				colNames[i - 1] = rsmd.getColumnName(i);



			}

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

			while (rs.next()) {

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

				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)