您的位置:首页 > 博客中心 > 数据库 >

java基础之JDBC三:简单工具类的提取及应用

时间:2022-03-15 08:49

简单工具类:

public class JDBCSimpleUtils {
    /**
     * 私有构造方法
     */
    private JDBCSimpleUtils() {
    }

    /**
     * 驱动
     */
    public static String driver = null;
    /**
     * 连接字符串
     */
    public static String url = null;
    /**
     * 用户名
     */
    public static String user = null;
    /**
     * 密码
     */
    public static String password = null;

    /**
     * 读取配置文件, 并将读取到的值赋值给变量.
     */
    public static void readConfig() {
        try {
            //读取properties配置文件给变量赋值
            Properties pp = new Properties();
            pp.load(new FileReader("day04_classTest\\src\\config.properties"));
            url = pp.getProperty("url");
            user = pp.getProperty("username");
            driver = pp.getProperty("driver");
            password = pp.getProperty("password");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 静态代码块
     * 变量赋值
     * 并注册驱动
     */
    static {
        try {
            //变量赋值
            readConfig();
            //注册驱动
            Class.forName(driver);
        } catch (Exception e) {
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
            e.printStackTrace();
        }
    }

    /**
     * 获取Connection
     *
     * @return 数据库连接
     */
    public static Connection getConnection() {

        try {
            return DriverManager.getConnection(url, user, password);
        } catch (SQLException ex) {
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
            ex.printStackTrace();
            return null;
        }
    }

    public static Statement getStatement(Connection conn) {
        if (conn == null) {
            return null;
        }
        try {
            return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
            // 设置数据集可以滚动,可以更新
        } catch (SQLException ex) {
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
            release(conn);
        }
        return null;
    }

    /**
     * 获取一个带参数的 PreparedStatement
     * 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
     *
     * @param conn      数据库连接
     * @param cmdText   需要 ? 参数的 SQL 语句
     * @param cmdParams SQL 语句的参数表
     * @return 如果获取失败将返回 null,调用时记得检查返回值
     */
    public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object... cmdParams) {
        if (conn == null) {
            return null;
        }
        PreparedStatement pstmt = null;
        try {
            pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            int i = 1;
            for (Object item : cmdParams) {
                pstmt.setObject(i, item);
                i++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            release(conn, pstmt);
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
        }
        return pstmt;
    }


    /**
     * 释放资源
     *
     * @param conn Connection
     * @param stat Statement
     * @param rs   ResultSet
     */
    public static void release(Connection conn, Statement stat, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
        } finally {
            try {
                if (stat != null) {
                    stat.close();
                    stat = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
            } finally {
                try {
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                    //写入日志
                    //Logger.WriteLog(JDBCUtils.class.getName(),"");
                }
            }
        }
    }

    /**
     * 释放资源
     *
     * @param conn Connection
     * @param stat Statement
     */
    public static void release(Connection conn, Statement stat) {
        try {
            if (stat != null) {
                stat.close();
                stat = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
            }
        }
    }

    /**
     * 释放资源
     *
     * @param conn Connection
     */
    public static void release(Connection conn) {
        try {
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            //写入日志
            //Logger.WriteLog(JDBCUtils.class.getName(),"");
        }
    }
}

 

简单工具类的应用:

public class DemoTest {
    public static void main(String[] args) {
        String sql1 = "SELECT * FROM users";
        getResultSet(sql1);

        Object[] objs = new Object[2];
        objs[0] = "123456789";
        objs[1] = 2;
        String sql2 = "UPDATE users SET psw= ? WHERE uid= ?";
        executeNoQuery(sql2, objs);
    }

    /**
     * 增删改的方法
     *
     * @param sql
     * @param obj
     */
    private static void executeNoQuery(String sql, Object... obj) {
        //获取Connection
        Connection conn = JDBCSimpleUtils.getConnection();
        //获取PreparedStatement
        PreparedStatement ps = JDBCSimpleUtils.getPreparedStatement(conn, sql, obj);
        try {
            int i = ps.executeUpdate();
            if (i > 0) {
                System.out.println("ok");
            } else {
                System.out.println("error");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    /**
     * 查询返回ResultSet
     *
     * @param sql
     */
    private static void getResultSet(String sql) {
        //获取Connection
        Connection conn = JDBCSimpleUtils.getConnection();
        //获取Statement
        Statement stat = JDBCSimpleUtils.getStatement(conn);
        ResultSet rs = null;
        try {
            rs = stat.executeQuery(sql);
            while (rs.next()) {
                int id = rs.getInt("uid");
                String name = rs.getString("uname");
                String psw = rs.getString("psw");
                System.out.println(id + "--" + name + "--" + psw);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCSimpleUtils.release(conn, stat, rs);
        }
    }
}

 

热门排行

今日推荐

热门手游