zoukankan      html  css  js  c++  java
  • 我的JdbcUtils类

    这是目录结构:

    其中后面三个类都是第一个类的子类,第一个类是父类。

    JdbcUtils:

    package com.smt.db;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    
    import com.alibaba.druid.pool.DruidDataSource;
    
    public class JdbcUtils {
        // 定义变量
        private Connection ct = null;
        // 大多数情况下用preparedstatement替代statement
        private PreparedStatement ps = null;
        private ResultSet rs = null;
    
        // 连接数据库的参数
        protected String url = "";
        protected String username = "";
        protected String driver = "";
        protected String passwd = "";
    
        private CallableStatement cs = null;
        protected DruidDataSource dataSource = new DruidDataSource();
    
        public CallableStatement getCs() {
            return cs;
        }
    
        // 得到连接
        public void getConnection() {
            try {
                ct = dataSource.getConnection();
                ct.setAutoCommit(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public void closeConnection(){
            try {
                ct.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        public void BeginTran(){
            try {
                ct = dataSource.getConnection();
                ct.setAutoCommit(false);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public void CommitTran() throws SQLException{
            ct.commit();
            ct.close();
        }
        
        public void RollBackTran(){
            try {
                ct.rollback();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    ct.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
        public List<Map> executeQuery(String sql, String[] parameters) {
            List<Map> list = new ArrayList<Map>();
            try {
                ps = ct.prepareStatement(sql);
                if (parameters != null) {
                    for (int i = 0; i < parameters.length; i++) {
                        ps.setString(i + 1, parameters[i]);
                    }
                }
                rs = ps.executeQuery();
    
                List<Map> heads = new ArrayList<Map>();
                ResultSetMetaData rsmd = rs.getMetaData();// rs为查询结果集
                int count = rsmd.getColumnCount();
                for (int i = 1; i <= count; i++) {
                    Map meta = new HashMap();
                    meta.put("colName", rsmd.getColumnName(i));
                    meta.put("dataType", rsmd.getColumnTypeName(i));
                    heads.add(meta);// 把列名存入向量heads中
                }
    
                while (rs.next()) {
                    Map map = new HashMap();
                    for (Map col : heads) {
                        switch (col.get("dataType").toString()) {
                        case "VARCHAR":
                            map.put(col.get("colName").toString().toLowerCase(),
                                    rs.getString(col.get("colName").toString()));
                            break;
                        case "BIGINT":
                            map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
                            break;
                        case "SMALLINT":
                            map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
                            break;
                        case "INTEGER":
                            map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
                            break;
                        case "BIGDECIMAL":
                            map.put(col.get("colName").toString().toLowerCase(),
                                    rs.getBigDecimal(col.get("colName").toString()));
                            break;
                        case "DECIMAL":
                            map.put(col.get("colName").toString().toLowerCase(),
                                    rs.getBigDecimal(col.get("colName").toString()));
                            break;
                        case "DATE":
                            map.put(col.get("colName").toString().toLowerCase(),
                                    rs.getString(col.get("colName").toString()));
                            break;
                        case "DATETIME":
                            map.put(col.get("colName").toString().toLowerCase(),
                                    rs.getString(col.get("colName").toString()));
                            break;
                        default:
                            break;
                        }
                    }
                    list.add(map);
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e.getMessage());
            } finally {
                close(rs, ps);
            }
            return list;
        }
    
        // 先写一个update、delete、insert
        // sql格式:update 表名 set 字段名 =?where 字段=?
        // parameter神应该是(”abc“,23)
        public void executeUpdate(String sql, String[] parameters) {
            try {
                ps = ct.prepareStatement(sql);
                if (parameters != null) {
                    for (int i = 0; i < parameters.length; i++) {
                        ps.setString(i + 1, parameters[i]);
                    }
    
                }
                ps.executeUpdate();
            } catch (Exception e) {
                e.printStackTrace();// 开发阶段
                // 抛出异常
                // 可以处理,也可以不处理
                throw new RuntimeException(e.getMessage());
            } finally {
                close(rs, ps);
            }
        }
    
        public void close(ResultSet rs, Statement ps) {
            // 关闭资源(先开后关)
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                rs = null;
            }
            if (ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                ps = null;
            }
        }
    }

    LocalHelper:

    package com.smt.db;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class LocalHelper extends JdbcUtils {
        
        private static Properties  pp = null;
        private InputStream fis = null;
        
        public LocalHelper(){
            super();
            pp = new Properties();
            fis=OggHelper.class.getClassLoader().getResourceAsStream("local.properties");
            //fis = new FileInputStream();
            try {
                pp.load(fis);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            url = pp.getProperty("dbUrl");
            driver = pp.getProperty("dbDriver");
            username = pp.getProperty("dbUserName");
            passwd = pp.getProperty("dbPassword");
            
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(passwd);
        }
    }

    local.properties:

    #application configs
    #jdbc c3p0 config
    dbDriver=com.mysql.jdbc.Driver
    dbUrl = jdbc:mysql://localhost:3306/shbi?characterEncoding=utf8
    dbUserName = root
    dbPassword = root
  • 相关阅读:
    统计元音 题解
    C语言合法标识符 题解
    查找最大元素 题解
    java_day05_数组
    java_day4_while循环
    java_day03_if,Switch,三目和for循环
    java_day02_基本运算符和数据类型
    java_day01_注释,变量
    前端_day04_行,块,RGB,行高,overflow
    前端_day03_盒子模型,border,padding,margin
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/8668879.html
Copyright © 2011-2022 走看看