1. 程式人生 > >資料庫jdbc封裝

資料庫jdbc封裝

經過幾天的努力終於搞好了,這個類可以不用管資料庫欄位,不用寫dao類,直接map新增,新增刪除和修改,jdbc連結,分享給大家,用的話記得加上連線池,尊重原創,轉載請註明

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", "'zhang'", "id", "0"); } // map.put("password", "123"); } }