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

封装数据结果集

阅读更多

原理就是用Map存放单条数据然后放到List里

用起来可以这样调用  List list = rs.selectRS(sqlStr);

for(int i=0;i<list.size;i++)
{
    ((Map)list.get(i)).get("username");
}
这样的话就不用每次在写数据库连接了,而且有比较复杂的页面格式输出就可以通过对 i 的控制来实现了

下面是具体实现类可以结合struts,webwork2的标签来用,我已经测试过了没问题
我也看到一些人是自己写类来代替Map来用的

package com;

import conn.DBConnManager;
import java.sql.*;
import java.util.*;

public class ResultGather
...{
 
private String sql;
 
public ResultGather()
 
...{
  
 }

 
public ResultGather(String sqlcom)
 
...{
  
this.sql=sqlcom;
 }

 
public List selectRS(String sqlStr)
 
...{
  
this.sql = sqlStr;
  
return selectRS();
 }

 
public List selectRS()
 
...{
  List rsall 
= new ArrayList();
  Map rsTree;
  DBConnManager conn 
= null;
  Connection con 
= null;
  Statement stmt 
= null;
  ResultSet rs 
= null;
  
try...{
   conn 
= DBConnManager.getInstance();
   con 
= conn.getConnection("mssql");
   stmt 
= con.createStatement();
   rs 
= stmt.executeQuery(sql);
   ResultSetMetaData rsmd 
= rs.getMetaData();//取数据库的列名  我觉得名比1,2,3..更好用
   int numberOfColumns = rsmd.getColumnCount();
   
while(rs.next())
   
...{
   rsTree 
= new HashMap(numberOfColumns);//注意要new
     for(int r=1;r<numberOfColumns+1;r++)
     
...{
      rsTree.put(rsmd.getColumnName(r),rs.getObject(r)); 
     }

     rsall.add(rsTree);
   }

   
  }
catch(java.lang.Exception ex)...{
   ex.printStackTrace();
  }
finally...{
   
try...{
    
if(rs!=null)
     rs.close();
    
if(stmt!=null)
     stmt.close();
    
if(conn!=null)
     conn.releaseConnection(
"mssql",con);
   }
catch(Exception e)...{
    
   }
   
  }

  
return rsall;
 }

}

 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics