Maison  >  Article  >  base de données  >  Encapsulation jdbc de la base de données

Encapsulation jdbc de la base de données

一个新手
一个新手original
2017-09-19 09:34:281199parcourir


Après plusieurs jours de travail acharné, j'ai finalement réussi. Cette classe peut être utilisée sans s'occuper des champs de la base de données ni écrire de classes dao. Elle peut directement ajouter une carte, ajouter, supprimez et modifiez, lien jdbc, partagez-le avec tout le monde, si vous l'utilisez, pensez à ajouter un pool de connexion, respectez l'originalité, merci d'indiquer

package jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/**
 * 操作数据库工具类
 *
 *
 */public class domain {

    /**
     * 连接数据
     *
     * @return conn
     */
    public static Connection getConnection(String url, String username, String password) {
        Connection conn = null;        
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }        return conn;
    }    /**
     * 关闭连接对象
     *
     * @param conn
     *            连接对象
     * @param pstmt
     *            预编译对象
     * @param rs
     *            结果集
     */
    public static void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {        
    try {            
    if (rs != null) {
                rs.close();
            }            
            if (pstmt != null) {
                pstmt.close();
            }            
            if (conn != null) {
                conn.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    /**
     * 增删改操作
     *
     * @param sql
     *            SQL命令
     * @param param
     *            参数
     * @return
     */
    public static int executUpdate(Connection conn, String sql, Object[] param) {        
    int result = 0;
        PreparedStatement pstmt = null;        
        try {
            System.out.println(sql);
            pstmt = conn.prepareStatement(sql);            
            if (param != null) {                
            for (int i = 0; i < param.length; i++) {
                    pstmt.setObject(i + 1, param[i]);
                }
            }
            result = pstmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeAll(conn, pstmt, null);
        }        return result;
    }    /**
     * 查询
     *
     * @return int
     * @date 2015-7-25 上午11:10:06
     */
    public static ResultSet executQuery(Connection conn, String sql, String[] param) {
        PreparedStatement pstmt = null;
        ResultSet result = null;        
        try {
            pstmt = conn.prepareStatement(sql);            
            if (param != null) {                
            for (int i = 0; i < param.length; i++) {
                    pstmt.setString(i + 1, param[i]);
                }
            }
            result = pstmt.executeQuery();
        } catch (Exception e) {
            e.printStackTrace();
        }        return result;
    }    /**
     * 简单增删改SQL语句执行,复杂sql执行executUpdate方法
     * 字符串类型需要加单引号
     * @param url
     *            数据库
     * @param username
     *            数据库用户名
     * @param password
     *            数据库密码
     * @param map
     *            参数列,值
     * @param tableName
     *            表名
     * @param typeSql
     *            SQL类型 insert,dell,update
     * @param oldLine
     *            删除时为要删除的列名,更新的时候为where前的条件列名(仅当且使用dell和update时填写,insert时不作用)
     * @param newLine
     *            更新时where候的条件列名(仅当且使用update时填写,dell,insert时不作用)
     * @param oldCondition
     *            删除时为要删除的条件,更新的时候为where前的条件(仅当且使用dell和update时填写,insert时不作用)
     * @param newCondition
     *            更新的时候为where后的条件(仅当且使用update时填写,dell,insert时不作用)
     */

    public static void sql(String url, String username, String password, Map<String, Object> map, String tableName,
            String typeSql, String oldLine, String oldCondition, String newLine, String newCondition) {
        String sql = "";
        Connection conn = getConnection(url, username, password);
        Object[] valueArray = null;        if (typeSql.equals("insert")) {
            List<Object> key = new ArrayList<Object>();
            List<Object> value = new ArrayList<Object>();
            StringBuffer sb = new StringBuffer();
            StringBuffer wen = new StringBuffer();            for (Object string : map.keySet()) {
                key.add(string);
                value.add(map.get(string));
            }

            Object[] keyArray = key.toArray();
            valueArray = value.toArray();            for (int i = 0; i < keyArray.length; i++) {
                sb.append(keyArray[i] + ",");
                wen.append("?,");
            }
            String string = sb.toString();
            string = string.substring(0, string.length() - 1);
            String wenStr = wen.toString();
            wenStr = wenStr.substring(0, wenStr.length() - 1);

            sql = "INSERT INTO " + tableName + "(" + string + ") VALUES (" + wenStr + ")";
        } else if (typeSql.equals("dell")) {
            sql = "DELETE FROM " + tableName + " WHERE " + oldLine + " = " + oldCondition;
        } else if (typeSql.equals("update")) {
            sql = "UPDATE " + tableName + " SET " + oldLine + "= " + oldCondition + " WHERE " + newLine + " = "
                    + newCondition;
        }        int executUpdate = executUpdate(conn, sql + ";", valueArray);
        System.out.println(executUpdate);
    }//测试
    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("appid", "lisi");         for (int i = 0; i < 100; i++) {
         System.out.println(i);
         map.put("id",i);         // 增加
          sql("test", "root", "", map, "user", "insert", "", "", "", "");          // 删除
          sql("test", "root", "", map, "user", "dell", "id", i+"","", "");          // 修改//        
          sql("test", "root", "", map, "user", "update", "appid", "&#39;zhang&#39;", "id", "0");

         }        // map.put("password", "123");

    }
}
lors de la réimpression.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn