`
FeiXing2008
  • 浏览: 53170 次
  • 性别: 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> >
这种数据结构,看着别扭!!!!!!!!!!!!!!

相关推荐

    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...

    Commons-dbutils1.7 jar包.rar

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

    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; // ...

    springmybatis

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

    iBatis-设置缓存模式-Java源码(下载)

    &lt;select id="getByLike" resultClass="Account" parameterClass="Account" cacheModel="categoryCache"&gt; select ACC_ID as id, ACC_FIRST_NAME as firstName, ACC_LAST_NAME as lastName, ACC_EMAIL as ...

    jdbcTemplate

    public List&lt;User&gt; getUserLists(Map&lt;String, Object&gt; map) { return null; } @Override public Integer getUserCount(Map&lt;String, Object&gt; map) { String sql = "select count(1) from User where id=? ...

    java仓库管理

    public Map&lt;Integer, String&gt; getAllSupplier() { Map supplierData = new HashMap();//基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作 String sql = "select sup_id,sup_name,sup_address,postcode...

    BBS网站代码,jsp,java,javaScript,HTNL语言

    Map&lt;Integer,List&lt;Board&gt;&gt; findAllBoard(); /** * 根据版块id查找版块 * * @param boardId * @return */ Board findBoard(int boardId); } /*完成论坛用户数据层的操作 * */ public class ...

    Hibernate注释大全收藏

    具体的java.sql.Clob, Character[], char[] 和 java.lang.String 将被持久化为 Clob 类型. java.sql.Blob, Byte[], byte[] 和 serializable type 将被持久化为 Blob 类型。 @Lob public String getFullText() { ...

    jdk1.6 windows 64位

    组成 JDK包含的基本组件包括: ·javac – 编译器,将源程序转成字节码 ·jar – 打包工具,将相关的类文件打包成一个文件 ·javadoc – 文档生成器,从源码注释中提取文档 ·jdb – debugger,查错工具 ·java –...

    java jdk实列宝典 光盘源代码

    IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的...

    java基础案例与开发详解案例源码全

    11.3 List接口实现类277 11.3.1 实现类ArrayList277 11.3.2 实现类LinkedList279 11.3.3 实现类Vector281 11.4 Map接口283 11.4.1 实现类HashMap284 11.4.2 实现类LinkedHashMap285 11.4.3 实现类TreeMap286 11.4.4 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.2.4 参数列表(Parameter List) 159 7.2.5 方法体(Method Body) 160 7.2.6 方法串串烧 160 7.3 方法的参数:让汽车加速 161 7.3.1 方法的参数:让汽车可以加速 161 7.3.2 带参数的方法有何不同? 162 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.2.4 参数列表(Parameter List) 159 7.2.5 方法体(Method Body) 160 7.2.6 方法串串烧 160 7.3 方法的参数:让汽车加速 161 7.3.1 方法的参数:让汽车可以加速 161 7.3.2 带参数的方法有何不同? 162 ...

    Java开发详解.zip

    031706_【第17章:Java数据库编程】_ResultSet接口笔记.pdf 031707_【第17章:Java数据库编程】_PreparedStatement接口笔记.pdf 031708_【第17章:Java数据库编程】_处理大数据对象(1)—处理CLOB数据笔记.pdf ...

Global site tag (gtag.js) - Google Analytics