DBUtil数据库操作工具类

来源:互联网 发布:mysql 默认是什么join 编辑:程序博客网 时间:2024/06/07 16:15
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 数据库操作帮助类 * @author wpj_service * */public class DBUtil {private static Connection getConnection(){Connection conn = null;try {//获取数据库链接,可以使用JDBC或者连接池conn = C3P0ConnentionProvider.getConnection();} catch (SQLException e) {LoggerUtil.insertLog("数据库连接出错");// TODO Auto-generated catch blocke.printStackTrace();}return conn;}/** * 关闭所有连接 */@SuppressWarnings("null")private static boolean closeAll(ResultSet rst,PreparedStatement pst, Connection conn) {        // TODO 关闭所有连接        boolean flag = false;        try {            if(rst!=null){                rst.close();            }            if(pst!=null||!pst.isClosed()){                pst.close();            }            if(conn!=null||!conn.isClosed()){                conn.close();                flag = true;            }        } catch (SQLException e) {            e.printStackTrace();        }        return flag;    }/** * 更新数据库操作 * @param sql * @return */public static int update(String sql){int i = 0 ;Connection conn = getConnection();ResultSet rs = null;PreparedStatement pst = null;try {conn = C3P0ConnentionProvider.getConnection();pst = conn.prepareStatement(sql);i = pst.executeUpdate();} catch (SQLException e) {LoggerUtil.insertLogError("数据库连接错误");// TODO Auto-generated catch blocke.printStackTrace();}finally{LoggerUtil.insertLogError("更新数据库:"+i);closeAll(rs, pst, conn);        }        return  i ;}/** * 查询数据 * @return */public static List<Map<String,Object>> query(String sql){List<Map<String,Object>> list = null;Connection conn = getConnection();ResultSet rs = null;PreparedStatement pst = null;try {conn = C3P0ConnentionProvider.getConnection();pst = conn.prepareStatement(sql);rs = pst.executeQuery();list = getResultList(rs);} catch (SQLException e) {// TODO Auto-generated catch blockLoggerUtil.insertLogError("数据库连接错误");e.printStackTrace();}finally{LoggerUtil.insertLog("查询数据库");closeAll(rs, pst, conn);        }return list;}        /*     * 解析ResultSet 表列数据     */    private static Map<String,Object> getResultMap(ResultSet rs) throws SQLException{         Map<String, Object> rawMap = new HashMap<String, Object>();        ResultSetMetaData  rsmd = rs.getMetaData(); // 表对象信息        int count = rsmd.getColumnCount();          // 列数        // 遍历之前需要调用 next()方法        for (int i = 1; i <= count; i++) {              String key = rsmd.getColumnLabel(i);            Object value = rs.getObject(key);            rawMap.put(key, value);         }        return rawMap;    }        /*     * 解析ResultSet 表数据     */    private static List<Map<String,Object>> getResultList(ResultSet rs) throws SQLException{        List<Map<String,Object>> rawList = new ArrayList<Map<String,Object>>();        while(rs.next()){            Map<String, Object> rawMap = getResultMap(rs);            rawList.add(rawMap);         }        return rawList;    }}


原创粉丝点击