Heim  >  Artikel  >  Datenbank  >  Datenbank-JDBC-Kapselung

Datenbank-JDBC-Kapselung

一个新手
一个新手Original
2017-09-19 09:34:281158Durchsuche


Nach mehreren Tagen harter Arbeit habe ich es endlich geschafft. Diese Klasse kann verwendet werden, ohne sich um die Datenbankfelder zu kümmern oder Dao-Klassen zu schreiben. Löschen und ändern, JDBC-Link, für alle freigeben. Wenn Sie ihn verwenden, denken Sie daran, den Verbindungspool hinzuzufügen, die Originalität zu respektieren und beim Nachdrucken

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");

    }
}
anzugeben

Das obige ist der detaillierte Inhalt vonDatenbank-JDBC-Kapselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn