一、ResultSet转ListMap
把ResultSet转成ListMap可以更方便的处理数据。可以使用for循环,将每一行数据的key和value取出来放到HashMap中,并把HashMap放到ArrayList中,最后返回ArrayList即可。
public List<Map<String, Object>> resultSetToListMap(ResultSet rs) throws SQLException { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); while (rs.next()) { Map<String, Object> row = new HashMap<String, Object>(columns); for (int i = 1; i <= columns; ++i) { row.put(md.getColumnName(i), rs.getObject(i)); } list.add(row); } return list; }
二、ResultSet转JSON
把ResultSet转成JSON可以更方便的处理并传输数据。可以使用for循环,将每一行数据的key和value取出来放到JSONObject中,最后返回JSONObject即可。
public JSONObject resultSetToJson(ResultSet rs) throws SQLException, JSONException { JSONObject json = new JSONObject(); ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); while (rs.next()) { JSONObject row = new JSONObject(); for (int i = 1; i <= columns; ++i) { row.put(md.getColumnName(i), rs.getObject(i)); } json.accumulate("data", row); } return json; }
三、ResultSet转Map
把ResultSet转成Map可以更方便的处理数据。可以使用while循环,将第一行数据的key和value取出来放到HashMap中,并把HashMap返回即可。
public Map<String, Object> resultSetToMap(ResultSet rs) throws SQLException { Map<String, Object> map = new HashMap<String, Object>(); ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); if (rs.next()) { for (int i = 1; i <= columns; ++i) { map.put(md.getColumnName(i), rs.getObject(i)); } } return map; }
四、ResultSet回滚
ResultSet回滚是指取消之前对ResultSet所做的修改并恢复之前的状态。可以使用ResultSet的rollback方法来实现回滚。示例代码如下:
try { ResultSet rs = stmt.executeQuery("SELECT * FROM table"); // 进行更新操作 rs.rollback(); } catch (SQLException e) { e.printStackTrace(); }
五、ResultSet方法
ResultSet提供了许多便于操作结果集的方法,如getRow、absolute、relative、previous等。示例代码如下:
while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); // 获取当前行的索引 int index = rs.getRow(); // 将光标移到第一行 rs.first(); // 将光标移到指定行 rs.absolute(5); // 将光标移动到相对位置 rs.relative(2); // 将光标移到上一行 rs.previous(); }
六、ResultSet遍历
ResultSet提供了一种遍历结果集的方式,即使用while循环和next方法。示例代码如下:
while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); }
七、ResultSet接口
ResultSet接口是Java中操作数据库中结果集的接口,可以通过实现这个接口来进行结果集的操作。示例代码如下:
class ResultSetImpl implements ResultSet { // 实现ResultSet接口的方法 }
八、ResultSet起始索引
ResultSet起始索引是指ResultSet中记录的第一行索引,可以使用ResultSet的first方法、absolute方法或relative方法来获取起始索引。示例代码如下:
ResultSet rs = stmt.executeQuery("SELECT * FROM table"); // 获取起始索引 rs.first(); int index = rs.getInt("id"); // 将光标移到第5行 rs.absolute(5); index = rs.getInt("id");
九、ResultSet未关闭的后果
不关闭ResultSet可能会导致连接泄漏、内存泄漏等问题,所以在使用ResultSet后需要及时关闭。示例代码如下:
ResultSet rs = stmt.executeQuery("SELECT * FROM table"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); } rs.close();
十、ResultSet是结果集类
ResultSet是Java中操作数据库中结果集的类,可以使用ResultSet提供的方法来获取结果集的信息。示例代码如下:
ResultSet rs = stmt.executeQuery("SELECT * FROM table"); ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); } rs.close();