将查询的结果ResultSet封装成List<Map<String,object>>返回
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 cn.itcast.jdbc.JdbcUtils;
public class ResultSetMetaDatatest {
public static void main(String[] args) throws SQLException{
String sql = "select * from user where id <3";
List<Map<String,Object>> datas = ResultSetMetaDatatest.read(sql, null);
System.out.println(datas);
}
public static List<Map<String, Object>> read(String sql, Object[] params) 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(); //ResultSetMetaData元数据
int count = rsmd.getColumnCount(); //rs的行数
String[] columnNames = new String[count];
for(int i = 1; i<=count; i++){
columnNames[i-1] = rsmd.getColumnName(i); // 把每行的名字"name" "birthday"等取出来
}
List<Map<String,Object>> datas = new ArrayList<Map<String,Object>>(); //封装数据的List和Map
while(rs.next()){
Map<String,Object> data = new HashMap<String, Object>();
for(int i=1; i<columnNames.length; i++){
data.put(columnNames[i], rs.getObject(columnNames[i])); //根据name取出数据并存到map中
}
datas.add(data); //map存到list中
}
return datas;
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtils.free(rs, ps, conn);
}
return null;
}
}