您的位置:首页 > 数据库

封装jdbc仿照hibernate访问数据库查询数据

2013-05-31 16:59 337 查看
封装后的jdbc操作数据

public static ArrayList getDatas(Connection conn, SQLObject sqlObj) throws SQLException {

ArrayList rows = new ArrayList();

PreparedStatement pst=null;

ResultSet rs=null;

try {

if (sqlObj == null)

return rows;

pst = conn.prepareStatement(sqlObj.getSql());

Vector params = sqlObj.getParams();

for (int i = 0; i < params.size(); i++) {

if (params.get(i) == null)

throw new SystemException("查询sql语句中第" + (i + 1) + "参数为null!");

pst.setObject(i + 1, params.get(i));//给sql语句中参数赋值

}

rs = pst.executeQuery();

ResultSetMetaData rsm = rs.getMetaData();

while (rs.next()) {

rows.add(getRow(rs, rsm));//getRow方法在下面

}

} catch (Exception e) {

e.printStackTrace();

}finally{

if(rs!=null){

rs.close();

}

if(pst!=null){

pst.close();

}

}

return rows;

}

=====================

private static HashMap getRow(ResultSet rs, ResultSetMetaData rsm) throws SQLException {

HashMap map = new HashMap();

int count = rsm.getColumnCount();

for (int i = 1; i <= count; i++) {

Object value;

int colType = rsm.getColumnType(i);

switch (colType) {

case Types.TIMESTAMP:

case Types.DATE:

value = rs.getDate(i);

if (value != null)

value = Tools.formatDate((java.util.Date) value);

break;

case Types.FLOAT:

case Types.NUMERIC:

value = rs.getString(i);

if (value != null) {

int index = value.toString().indexOf(".");

if (index == 0) {

value = "0".concat(value.toString());

}

}

break;

default:

value = rs.getString(i);

}

map.put(rsm.getColumnName(i).toLowerCase(), value == null ? "" : value.toString());

}

return map;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐