• SQLUtil,java JDBC 实现sql语句execute执行插入、更新、删除dml操作,查询queryList数据库单列List数据,查询queryObject单记录对象数据及数据关闭close重载实现等


    本文摘自

    http://www.xwood.net/_site_domain_/_root/5870/5874/t_c277906.html


    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.sql.DataSource;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    public final class SQLUtil {
     
        private static Log logger = LogFactory.getLog(SQLUtil.class);
     
        /**
         * 执行插入、更新、删除操作
         * 
         * @param dataSource
         * @param sql
         * @param params
         * @throws SQLException
         */
        public static int execute(DataSource dataSource, String sql, Object... params) throws SQLException {
     
            logger.debug("start execute sql:" + sql);
            long startTime = System.currentTimeMillis();
            Connection conn = null;
            Statement stat = null;
            int updateCount = 0;
     
            try {
                conn = dataSource.getConnection();
     
                if (params == null || params.length == 0) {
     
                    stat = conn.createStatement();
                    stat.execute(sql);
     
                } else {
     
                    stat = conn.prepareStatement(sql);
     
                    PreparedStatement pstat = (PreparedStatement) stat;
     
                    int parameterIndex = 1;
                    for (Object param : params) {
                        pstat.setObject(parameterIndex, param);
                        parameterIndex++;
                    }
     
                    pstat.execute();
                }
     
                updateCount = stat.getUpdateCount();
     
                logger.debug("end execute sql:" + sql + " UpdateCount:" + updateCount + " "
                        + (System.currentTimeMillis() - startTime) + "ms");
            } finally {
                close(stat);
                close(conn);
            }
     
            return updateCount;
        }
     
        /**
         * 查询数据库单列List数据
         * 
         * @param dataSource
         * @param sql
         * @param params
         * @return
         * @throws SQLException
         */
        public static List<Object> queryList(DataSource dataSource, String sql, Object... params) throws SQLException {
            logger.debug("start execute sql:" + sql);
     
            long startTime = System.currentTimeMillis();
     
            Connection conn = null;
            Statement stat = null;
            List<Object> resultList = new ArrayList<Object>();
     
            try {
     
                conn = dataSource.getConnection();
                stat = conn.createStatement();
     
                if (params == null || params.length == 0) {
     
                    stat = conn.createStatement();
                    ResultSet rs = stat.executeQuery(sql);
     
                    int i = 1;
                    while (rs.next()) {
                        resultList.add(rs.getObject(i));
                        i++;
                    }
     
                    return resultList;
     
                } else {
     
                    stat = conn.prepareStatement(sql);
     
                    PreparedStatement pstat = (PreparedStatement) stat;
     
                    int parameterIndex = 1;
                    for (Object param : params) {
                        pstat.setObject(parameterIndex, param);
                        parameterIndex++;
                    }
     
                    ResultSet rs = pstat.executeQuery();
     
                    int i = 1;
                    while (rs.next()) {
                        resultList.add(rs.getObject(i));
                        i++;
                    }
     
                }
     
                logger.debug("end query sql:" + sql + " Result:" + resultList + " "
                        + (System.currentTimeMillis() - startTime) + "ms");
     
            } finally {
                stat.close();
                conn.close();
            }
     
            return resultList;
        }
     
        public static Object queryObject(DataSource dataSource, String sql, Object... params) throws SQLException {
            List<Object> resultList = queryList(dataSource, sql, params);
     
            if (resultList == null || resultList.size() == 0)
                return null;
     
            return resultList.get(0);
     
        }
     
        public static void close(Connection con) {
            if (con != null)
                try {
                    con.close();
                } catch (SQLException ex) {
                    logger.debug("Could not close JDBC Connection", ex);
                } catch (Throwable ex) {
                    logger.debug("Unexpected exception on closing JDBC Connection", ex);
                }
        }
     
        public static void close(Statement stmt) {
            if (stmt != null)
                try {
                    stmt.close();
                } catch (SQLException ex) {
                    logger.trace("Could not close JDBC Statement", ex);
                } catch (Throwable ex) {
                    logger.trace("Unexpected exception on closing JDBC Statement", ex);
                }
        }
     
        public static void close(ResultSet rs) {
            if (rs != null)
                try {
                    rs.close();
                } catch (SQLException ex) {
                    logger.trace("Could not close JDBC ResultSet", ex);
                } catch (Throwable ex) {
                    logger.trace("Unexpected exception on closing JDBC ResultSet", ex);
                }
        }
     
    }

  • 相关阅读:
    centOS7 查看防火墙状态 开放端口
    PHP之Trait详解 转
    ps 树形显示
    composer 打印美化
    第一章 Java Web应用开发技术
    团队博客20
    团队博客19
    团队博客18
    团队博客17
    团队博客16
  • 原文地址:https://www.cnblogs.com/rdchen/p/12517176.html
Copyright © 2020-2023  润新知