废话不说,直接上代码:
//传入sql语句查询数据信息
public ResultSet selectSetInfoSQL(String sql) throws MyException
{
CachedRowSetImpl crs = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
crs = new CachedRowSetImpl();
ps = c.prepareStatement(sql);
}catch(SQLException e){
dbError.throwMyException("ORACLE查询语句准备错误!", "DBManager.updateSQL");
}
try {
if(ps!=null){
rs = ps.executeQuery();
}
crs.populate(rs);
}catch(Exception e1) {
dbError.throwMyException("ORACLE执行错误!", "DBManager.updateSQL");
}finally{
try{
rs.close();
ps.close();
}catch(Exception e){
dbError.throwMyException("ORACLE关闭错误!", "DBManager.updateSQL");
}
}
return crs;
}
//把查询得到的结果集转化为List
public List executeSQLSelect(String sql) throws MyException {
List list = new ArrayList();
ResultSet rs = null;
try {
rs = this.updateSQL(sql);
ResultSetMetaData md = rs.getMetaData();
String cols_name = "";
DecimalFormat myFormatter = new DecimalFormat("0");
// 检索此ResultSet对象的列的编号、类型和属性返回此ResultSet对象的列的描述
while (rs.next())// 遍历所有行
{
// Map data = new HashMap();
String[] info = new String[md.getColumnCount()];
for (int i = 0; i < md.getColumnCount(); i++)// 遍历此行的所有列
{
cols_name = md.getColumnName(i + 1);// 取出列名
Object val = rs.getObject(cols_name);
if (val instanceof Number)
// 如果是数字类型(可以转化为数字objtoint的意思)则格式化为标准数字格式
{
val = myFormatter.format(val);
}
val = (val == null) ? "" : val;// 格式化空值
info[i] = (String) val;
// data.put(cols_name, ""+val);
}
list.add(info);
// list中没行都是一个map可以list指向的行可以根据字段名去map中取值
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}