天天看點

将JDBC ResultSet結果集轉成List

private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
 
public String queryAll() {
	Connection conn = null;
	Statement sta = null;
	ResultSet rs = null;
	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/easyui", "root", "root");
		sta = conn.createStatement();
		rs = sta.executeQuery("select * from e_user");
		ResultSetMetaData md = rs.getMetaData(); //獲得結果集結構資訊,中繼資料
		int columnCount = md.getColumnCount();   //獲得列數 
		while (rs.next()) {
			Map<String,Object> rowData = new HashMap<String,Object>();
			for (int i = 1; i <= columnCount; i++) {
				rowData.put(md.getColumnName(i), rs.getObject(i));
			}
			list.add(rowData);
 
		}
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return "success";
}
           

ResultSet簡介:

    ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法(這些get方法可以通路目前行中的不同列)

    提供了對這些行中資料的通路。ResultSet.next方法用于移動到ResultSet中的下一行,使下一行成為目前行。

    上面的rs.getObject(i) 即是獲得這一行的資料值

ResultSetMetaData簡介:

    利用ResultSet的getMetaData的方法可以獲得ResultSetMeta對象,而ResultSetMetaData存儲了ResultSet的MetaData。

    所謂的MetaData在英文中的解釋為"Data about Data",直譯成中文則為"有關資料的資料"或者"描述資料的資料",

    實際上就是描述及解釋含義的資料。以Result的MetaData為例,ResultSet是以表格的形式存在,是以getMetaData

    就包括了資料的 字段名稱、類型以及數目等表格所必須具備的資訊。在ResultSetMetaData類中主要有一下幾個方法。

    ResultSetMetaData rsmd=rs.getMetaData();

    1、getColumCount()方法

    傳回所有字段的數目

    2、getColumName()方法

    根據字段的索引值取得字段的名稱。

    3、getColumType()方法

    根據字段的索引值取得字段的類型