数据库操作文件 具有极高的重用价值

来源:互联网 发布:java 批量 ping ip 编辑:程序博客网 时间:2024/05/03 19:50

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection {
    static private String strDriver = "com.mysql.jdbc.Driver";
    static private String strUrl = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gb2312";
    static private String strUser = "root";
    static private String strPwd = "123456";
    private Connection conn = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    //写在静态块里面 初始化一次就可以了 节省资源
    static {
        try {
            Class.forName(strDriver);
        } catch (ClassNotFoundException ex) {
            System.out.println("Error load" + strDriver);
        }
    }
    public DBConnection() {
    }
    //获得一个 连接对象
    private Connection getConnection() {
        try {
            if (conn == null || conn.isClosed())
                conn = DriverManager.getConnection(strUrl, strUser, strPwd);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
        return conn;
    }
    //获得一个Statement对象
    private Statement getStatement() {
        try {
            if (stmt == null)
                stmt = getConnection().createStatement();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
        return stmt;
    }
    //可执行查询语句 返回一个结果集合
    public ResultSet executeQuery(String sql) {
        try {
            rs = getStatement().executeQuery(sql);
        } catch (SQLException ex) {
            System.err.println("query error:" + ex.getMessage());
        }
        return rs;
    }
    //执行一系列的sql语句 执行成功 返回true 否则false
    public boolean executeBatch(java.util.ArrayList sqls) {
        boolean bRet = false;
        try {
            conn = getConnection();
            conn.setAutoCommit(false);
            stmt = conn.createStatement();
            for (int i = 0; i < sqls.size(); i++) {
                String sql = (String) sqls.get(i);
                stmt.addBatch(sql);
            }
            stmt.executeBatch();
            conn.commit();
            bRet = true;
        } catch (Exception ex) {
            try {
                conn.rollback();
            } catch (Exception ex2) {
                System.err.println("rollback failed:" + ex2.getMessage());
            }
            ex.printStackTrace();
        } finally {
        }
        return bRet;
    }
    //执行插入 删除 更新 返回一个数值  (INSERT、UPDATE 或 DELETE 语句)
    public int executeUpdate(String sql) {
        int resultNum = 0;
        try {
            resultNum = getStatement().executeUpdate(sql);
        } catch (SQLException ex) {
            System.err.println("update error:" + ex.getMessage());
        } finally {
        }
        return resultNum;
    }
    //关闭资源
    public void close() {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (stmt != null) {
                stmt.close();
                stmt = null;
            }
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (Exception ex) {
            System.err.println("close error:" + ex.getMessage());
        }
    }
  

}

原创粉丝点击