沃尔沃公司网站建设,手机制作海报,h5设计制作是什么意思,织梦网站地图制作今天在使用jstl标签展示查询结果时遇到一个小问题#xff0c;即如何将ResultSet对象传递给前台页面。 在默认情况中我们在使用数据库查询时
public List selectDataFromJdbc() throws SQLException, ClassNotFoundException {Class.forName(oracle.jdbc.driver.OracleD…今天在使用jstl标签展示查询结果时遇到一个小问题即如何将ResultSet对象传递给前台页面。 在默认情况中我们在使用数据库查询时
public List selectDataFromJdbc() throws SQLException, ClassNotFoundException {Class.forName(oracle.jdbc.driver.OracleDriver); //加载MYSQL JDBC驱动程序String url jdbc:oracle:thin:192.168.x.222:1521:orcl;Connection conn DriverManager.getConnection(url, username, passwd);Statement stat conn.createStatement();String sql select u.user_id ,u.account,u.name from sys_user u;// 格式: String sql select * from TableName where 11;ResultSet rs stat.executeQuery(sql);List list convertList(rs);stat.close();conn.close();return list;}在正常情况下我们是不能直接将 ResultSet 记录集 rs 直接传递给前台的因为 ResultSet 不仅无法进行循环遍历 即只能每行遍历从0至end 执行一次而且在实际应用中它还必须被关闭。当关闭后rs为null ,结果不再存在。 在这时我们就需要将 ResultSet 对象进行遍历到 list 中代码如下
private static List convertList(ResultSet rs) throws SQLException {List list new ArrayList();ResultSetMetaData md rs.getMetaData();//获取键名int columnCount md.getColumnCount();//获取行的数量while (rs.next()) {Map rowData new HashMap();//声明Mapfor (int i 1; i columnCount; i) {rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值}list.add(rowData);}return list;}查看以上代码可以看出我们使用 Map 与 MetaDate 使 ResultSet 储存到 list 中的因为 list 只能存放元素的索引而不能存放元素的值所以我们要用到 Map 。 使用这种方法的好处就是可以创建高复用性的代码 因为我们不需要每次通过指定键名取值。 实际工作间接与君共勉。
代码
package com.example.demo.test;import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/***JAVA将ResultSet结果集遍历到List中* author gblfy* date 2020-10-14*/
public class getColumnName {public static void main(String[] args) throws SQLException, ClassNotFoundException {getColumnName getColumnName new getColumnName();List list getColumnName.selectDataFromJdbc();for (Object o : list) {System.out.println(ddd: o);}}public List selectDataFromJdbc() throws SQLException, ClassNotFoundException {Class.forName(oracle.jdbc.driver.OracleDriver); //加载MYSQL JDBC驱动程序String url jdbc:oracle:thin:10.5.6.222:1521:lisdb;Connection conn DriverManager.getConnection(url, fisknow, fisknow);Statement stat conn.createStatement();String sql select u.user_id ,u.account,u.name from sys_user u;// 格式: String sql select * from TableName where 11;ResultSet rs stat.executeQuery(sql);List list convertList(rs);stat.close();conn.close();return list;}private static List convertList(ResultSet rs) throws SQLException {List list new ArrayList();ResultSetMetaData md rs.getMetaData();//获取键名int columnCount md.getColumnCount();//获取行的数量while (rs.next()) {Map rowData new HashMap();//声明Mapfor (int i 1; i columnCount; i) {rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值}list.add(rowData);}return list;}
}