`
FeiXing2008
  • 浏览: 53795 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

将ResultSet 转成Map<String, List<String> >

阅读更多

有时做些小程序时不想使用重型的ORM框架。

只是查查表与改一改表。

现在想做的程序是需要将jdbc封装起来,不让人家感到有jdbc的存在。

改表就容易,传个sql与返回个影响记录的行数就Ok了
查表就麻烦多了,因为数是二维的,还有列名等。所以我便用了集合将ResultSet封装起来。

 

public Map<String, ArrayList<String> > query(String sql){
		Map<String, ArrayList<String> > map = new HashMap<String, ArrayList<String> >();
		PreparedStatement preStat = null;
		try {
			preStat = conn.prepareStatement(sql);
			ResultSet rs = preStat.executeQuery();
			ResultSetMetaData rsMeta = rs.getMetaData();
			
			for(int i = 0; i < rsMeta.getColumnCount(); ++i){
				map.put(rsMeta.getColumnName(i+1), new ArrayList<String>());
			}
			while(rs.next()){
				for(int i = 0; i < rsMeta.getColumnCount(); ++i){
					String columnName = rsMeta.getColumnName(i+1);
					map.get(columnName).add(rs.getString(columnName));
				}
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				preStat.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

 其实大家看我代码会认为我新手,没错,我的确是。

还有我参考了TableModel这个类后,觉得需要再对这个Map进行封装,算是写个迭代器吧。

迟点再上贴!

分享到:
评论
8 楼 xierentc 2010-02-03  
http://www.iteye.com/topic/388888
好贴
7 楼 GRDJE 2010-02-03  
移动的员工就这水平?
6 楼 snowolf 2010-02-03  
kjj 写道
Map<String, ArrayList<String> >
这种数据结构,看着别扭!!!!!!!!!!!!!!

哪怕是Map<String, List<String> > 都比这个强!
5 楼 spider123 2010-01-27  
这局限性太大了吧,要封装也应该封装成Object类型呀,rs.getObject(i)
4 楼 FeiXing2008 2009-05-17  
mmwy 写道
推荐个轮子给你,apache commons中的dbutils


平时都用过了~~~想写个在jsp里用时方便点`~
3 楼 mmwy 2009-05-16  
推荐个轮子给你,apache commons中的dbutils
2 楼 ysen 2009-05-16  
public ArrayList execute(String sql) {
ArrayList list = new ArrayList();
Hashtable table = null;
conn = DBUtil.getConnection();
try {
stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);
rsmd=rs.getMetaData();
int len=rsmd.getColumnCount();
while(rs.next()){
table= new Hashtable();
for(int i=1;i<=len;i++){
table.put(rsmd.getColumnName(i), rs.getString(i));

}
list.add(table);
}

} catch (Exception e) {
e.printStackTrace();
}

return list;
}



这样会更好
1 楼 kjj 2009-05-16  
Map<String, ArrayList<String> >
这种数据结构,看着别扭!!!!!!!!!!!!!!

相关推荐

    ResultSet 转为listmap

    public static List&lt;Map&lt;String,Object&gt;&gt; ResultSetToList(ResultSet rs) throws SQLException { List&lt;Map&lt;String,Object&gt;&gt; results = new ArrayList&lt;Map&lt;String,Object&gt;&gt;(); ResultSetMetaData rsmd = rs....

    Java JDK实例宝典

    &lt;br&gt;第1章 Java基础 &lt;br&gt;1.1 转换基本数据类型 &lt;br&gt;1.2 Java的运算符 &lt;br&gt;1.3 控制程序的流程 &lt;br&gt;1.4 计算阶乘 &lt;br&gt;1.5 实现命令行程序 &lt;br&gt;第2章 Java面向对象程序设计 &lt;br&gt;2. 1 复数类 &lt;br&gt;2. 2 equals.chashCode...

    tomcat、jboss 连接池配置

    List&lt;Map&lt;String, String&gt;&gt; columns = new ArrayList&lt;&gt;(); ResultSetMetaData meta = rset.getMetaData(); for (int i = 1; i &lt;= meta.getColumnCount(); i++) { String columnName = meta.getColumnName(i); ...

    java行转列的例子

    在Java中实现行转列,通常涉及数据结构的转换,如从List&lt;List&lt;String&gt;&gt;转换为List&lt;String&gt;,或者更复杂地,从Map&lt;String, Object&gt;到自定义对象的集合。以下是一些关键知识点: 1. 数据结构理解: - **List**: Java...

    Commons-dbutils1.7 jar包.rar

    commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。...MapListHandler :将ResultSet中所有的数据存成List&lt;Map&lt;String,Object&gt;&gt; ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    List&lt;Map&lt;String, Object&gt;&gt; result = new ArrayList&lt;&gt;(); while (rs.next()) { Map&lt;String, Object&gt; row = new HashMap&lt;&gt;(); for (int i = 1; i &lt;= columnCount; i++) { row.put(md.getColumnName(i), rs....

    nc65前后台数据库操作的用法

    - **多行多列结果查询(Map形式)**:使用`newMapListProcessor()`将结果集转换成`List&lt;Map&lt;String, String&gt;&gt;`形式。 ```java List&lt;Map&lt;String, String&gt;&gt; result4 = (List&lt;Map&lt;String, String&gt;&gt;) dao.executeQuery...

    dbutils框架

    List&lt;Map&lt;String, Object&gt;&gt; list = new ArrayList&lt;&gt;(); while (rs.next()) { Map&lt;String, Object&gt; map = new HashMap&lt;&gt;(); for (int i = 1; i &lt;= rs.getMetaData().getColumnCount(); i++) { String key = rs....

    转换为json数据以及完整的json包

    List&lt;Map&lt;String, Object&gt;&gt; list = new ArrayList&lt;&gt;(); while (rs.next()) { Map&lt;String, Object&gt; row = new HashMap&lt;&gt;(); // 将结果行填充到Map中 // ... list.add(row); } ObjectMapper mapper = new ...

    jsp访问sqlserver205数据库

    List&lt;Map&lt;String, Object&gt;&gt; dataList = new ArrayList&lt;&gt;(); while (rs.next()) { Map&lt;String, Object&gt; row = new HashMap&lt;&gt;(); // 填充数据 dataList.add(row); } response.setContentType("application/json...

    highcharts加载数据库数据(java版)

    List&lt;Map&lt;String, Object&gt;&gt; dataList = new ArrayList&lt;&gt;(); while (rs.next()) { Map&lt;String, Object&gt; dataRow = new HashMap&lt;&gt;(); dataRow.put("name", rs.getString("name")); dataRow.put("value", rs.getInt...

    Java代码常用技巧

    本文将详细介绍这一过程,以及如何使用`List&lt;Map&lt;String,List&lt;Map&lt;String,String&gt;&gt;&gt;&gt;`来存储这些查询结果。 #### Oracle数据库表操作 首先,我们来看一下Oracle数据库中的存储过程`COST_PAID`。此过程的主要功能是...

    java实现jdbc查询结果集result转换成对应list集合

    List&lt;Map&lt;String, Object&gt;&gt; list = new ArrayList&lt;Map&lt;String, Object&gt;&gt;(); ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); int columnCount = md.getColumnCount(); while (rs.next()) { Map...

    Excel POI读取封装(文件+示范代码)

    Map&lt;String, List&lt;ExcelMap&gt;&gt; dbfield) { List&lt;HashMap&lt;String, Object&gt;&gt; list = new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;(); HashMap&lt;String, Object&gt; datamap = null; DealForeign deal = null; // ...

    JDBC-用元数据将结果集封装为List对象[归类].pdf

    List&lt;Map&lt;String, Object&gt;&gt; dataList = new ArrayList&lt;&gt;(); while (rs.next()) { Map&lt;String, Object&gt; dataMap = new HashMap&lt;&gt;(columnCount); for (int i = 1; i &lt;= columnCount; i++) { String columnName =...

    jsp页面常用的查询及显示方法分析

    Map&lt;String, Object&gt; rowData = new HashMap&lt;&gt;(); for (int i = 1; i &lt;= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); } list.add(rowData); } return list; } ``` 在这个方法中...

    Dbutils_详解.docx

    - `ArrayListHandler` 和 `MapListHandler` 分别将数据转换为 List&lt;Object[]&gt; 和 List&lt;Map&lt;String, Object&gt;&gt;。 - 其他如 `BeanHandler`, `ColumnListHandler`, `KeyedHandler`, `MapHandler`, `ScalarHandler` 等,...

    jqGrid与java简单的增删改查

    List&lt;Map&lt;String, Object&gt;&gt; dataList = new ArrayList&lt;&gt;(); try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { ResultSet rs = stmt....

    java连接mysql工具包

    public List&lt;Map&lt;String, Object&gt;&gt; select(String tableName, String condition); // 查询数据 public boolean update(String tableName, Map&lt;String, Object&gt; newData, String condition); // 更新数据 public ...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List&lt;User&gt; , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

Global site tag (gtag.js) - Google Analytics