手写Java DB工具类(1)

package com.Demo.utils;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

/**本类用于连接数据库 连接,使用本类只要输入对应的参数就可以方便使用数据库,简化繁杂的代码
* 初始化链接数据库所需的变量值
* 读取dbinfo.properties文档中的参数
* driverclass=com.mysql.jdbc.Driver
* url=jdbc:mysql://localhost:3306/day06
* username=root password=root
*/
public class DBUtil {
/**
* 设定driverclass变量(数据库厂商提供的类)
*/
private static String driverclass; // 设定driverclass变量
/**
* 设定url变量(数据库的路径和库名)
*/
private static String url; // 设定url变量
/**
* 设定username变量(数据库的登录账号)
*/
private static String username; // 设定username变量
/**
* 设定password变量(数据库的登录账号的密码)
*/
private static String password; // 设定password变量
/**
* 设定stmt变量
*/
private static PreparedStatement stmt; // 设定读取stmt变量
/**
* 设定conn变量
*/
private static Connection conn; // 设定读取conn变量
/**
* 设定rs变量
*/
private static ResultSet rs; // 设定读取rs变量

static {

    ResourceBundle rb = ResourceBundle.getBundle("dbinfo");
    driverclass = rb.getString("driverclass");
    url = rb.getString("url");
    username = rb.getString("username");
    password = rb.getString("password");

    try {
        /**
         * 创建数据库连接
         */
        // 创建数据库连接
        Class.forName(driverclass);
        conn = (Connection) DriverManager.getConnection(url, username,
                password);


    } catch (Exception e) {
        e.printStackTrace();
    }
}
/**
 * 如果在您创建类中创建了以下参数,提供您设置参数的方法
 * @param conns 设置Connection类型值
 * @param stmts 设置PreparedStatement类型值
 * @param rss   设置ResultSet类型值
 */

public static void setCSR(Connection conns,PreparedStatement stmts,ResultSet...rss){
    conn=conns;
    stmt=stmts;
    ResultSet[] arr=rss;
    for(int i=0;i<arr.length;i++)
    {
        rs=arr[i];
    }

}
/**
 * 提供接受SQL语句,以及设置对应SQL语句中的"?"参数的值,请务必添加与SQL语句中?
 * 的数量一致的参数。目的为了过滤用户输入,确保防止SQL注入问题。
 * @param sql 输入的SQL语句,次语句中的值用?替代
 * @param args 此为可变参数,输入SQL语句中?的替代参数,参数数量与?数量必须相同。
 * @throws SQLException 处理此方法的异常
 */
private static void Sql(String sql, String...args) throws SQLException {
    stmt = (PreparedStatement) conn.prepareStatement(sql);

    String[] arr=args;
    for(int i=0;i<arr.length;i++)
    {
        stmt.setString(i+1,arr[i]);
    }
}
/**
 * 创建Query连接,使用数据库中的executeQuery方法。
 * @param sql 输入的SQL语句,次语句中的值用?替代
 * @param args 此为可变参数,输入SQL语句中?的替代参数,参数数量与?数量必须相同。
 * @return  返回ResultSet值
 * @throws Exception 处理此方法的异常
 */
// 创建Query连接,使用数据库中的executeQuery方法
public ResultSet Query(String sql,String...args) throws Exception {

    Sql(sql, args);

    rs = stmt.executeQuery();

    return rs;
}

/**
* 创建execute连接,使用数据库中的execute方法
* @param sql 输入的SQL语句,次语句中的值用?替代
* @param args 此为可变参数,输入SQL语句中?的替代参数,参数数量与?数量必须相同。
* @return 返回boolean类型值
* @throws Exception 处理此方法的异常
*/
// 创建execute连接
public boolean execute(String sql,String…args) throws Exception {

    Sql(sql, args);

    boolean i = stmt.execute();

    return i;
}

/**
* 创建Update连接,使用数据库中的executeUpdate方法
* @param sql 输入的SQL语句,次语句中的值用?替代
* @param args 此为可变参数,输入SQL语句中?的替代参数,参数数量与?数量必须相同。
* @return 返回int数值类型
* @throws Exception 处理此方法的异常
*/
// 创建Update连接
public int Update(String sql,String…args) throws Exception {
Sql(sql, args);

    int i = stmt.executeUpdate();

    return i;
}

/**
* 提供关闭您创建class所在中的相关参数的值,RS为可变参数,当使用Update时无需关闭此变量。
* @param stmt 此类中的PreparedStatement对象
* @param conn 此类中的Connection对象
* @param rs 此类中的ResultSet对象 ,此参数为可变参数
*/
// 提供关闭您创建class所在中资源连接
public static void closeAlls(Statement stmt, Connection conn,
ResultSet…rs) {

    if (rs != null) {
        try {
            for (int i = 0; i < rs.length; i++)
                rs[i].close();
        } catch (SQLException e) {

            e.printStackTrace();
        }
        rs = null;
    }
    if (stmt != null) {
        try {
            stmt.close();
        } catch (SQLException e) {

            e.printStackTrace();
        }
        stmt = null;
    }
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {

            e.printStackTrace();
        }
        conn = null;
    }

}

/**
* 提供关闭本类中资源,RS为可变参数,当使用Update时无需关闭此变量。
* stmt 本类中的PreparedStatement对象
* conn 本类中的Connection对象
* rs 本类中的ResultSet对象 ,此参数为可变参数
*/
// 提供关闭本类中资源连接
public static void closeAll() {

    if (rs != null) {
        try {
            rs.close();
        } catch (SQLException e) {

            e.printStackTrace();
        } finally {
            rs = null;
        }
    }

    if (stmt != null) {
        try {
            stmt.close();
        } catch (SQLException e) {

            e.printStackTrace();
        } finally {
            stmt = null;
        }
    }

    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {

            e.printStackTrace();
        } finally {
            conn = null;
        }
    }
}

}

阅读更多
文章标签: java DBUtil DB
个人分类: java.DBUtil
上一篇关于Condition 的 Lock /unlock/ await/signal 开始时空唤醒时 怎样按序执行的。
下一篇手写 JAVA DB工具类(2)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭