package cn.citycraft.CTZLoginServer.utils; /* * 数据库连接、选择、更新、删除演示 */ // import java.sql.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; /** * @author 蒋天蓓 * 2015年7月14日下午3:25:06 * 数据库操作类 */ public class MySqlHelper { // ///////////////////////////////////////———–>>>数据成员 and 构造函数 private Connection dbconn; private Statement dbstate; private ResultSet dbresult; protected String username; protected String password; protected String url; private String driverName = "com.mysql.jdbc.Driver"; public MySqlHelper() { dbconn = null; dbstate = null; dbresult = null; } public void print(String str)// 简化输出 { System.out.println(str); } /** * 连接MySql数据库 * * @param host * @param port * @param dbaName * @param usName * @param psw * @return bool值,连接成功返回真,失败返回假 */ public MySqlHelper(String host, String port, String dbaName, String usName, String password) { try { Class.forName(driverName).newInstance(); } catch (Exception e) { }// "org.gjt.mm.mysql.Driver"两个驱动都可以用 String dbHost = host;// 数据库的一些信息 String dbPort = port; String dbName = dbaName; String Encode = "?&useUnicode=true&characterEncoding=utf-8"; // 解决MySql中文问题,要连续写不能空格 this.username = usName; this.password = password; this.url = "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName + Encode; }// end boolean dbConnection(…) public boolean dbConnection() { try { dbconn = DriverManager.getConnection(url, username, password); return true; } catch (Exception e) { print("数据库操作出错: " + e.getMessage());// 得到出错信息 print("登录URL: " + url); // 发生错误时,将连接数据库信息打印出来 print("登录账户: " + username); print("登录密码: " + password); return false; } } public boolean isTableExists(final String table) { try { dbConnection(); final DatabaseMetaData dbm = dbconn.getMetaData(); final ResultSet tables = dbm.getTables(null, null, table, null); return tables.next(); } catch (final SQLException e) { e.printStackTrace(); } return false; } public boolean createTables(String tableName, HashMap fields, String Conditions) { dbConnection(); String kv = ""; for (Entry kvs : fields.entrySet()) { kv += "`" + kvs.getKey() + "` " + kvs.getValue() + ", "; } if (kv.length() == 0) return false; kv = kv.substring(0, kv.length() - 2);// 根据String的索引提取子串 String sql = "CREATE TABLE `" + tableName + "` ( " + kv + (Conditions == "" ? "" : " , " + Conditions) + " ) ENGINE = InnoDB DEFAULT CHARSET=UTF8"; try { PreparedStatement state = dbconn.prepareStatement(sql); state.executeUpdate(); state.close(); return true; } catch (final Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); } return false; } /** * 判断数据库某个值是否存在! * * @param tableName * 数据库表名 * @param fieles * 字段名 * @param selCondition * 选择条件 * @return 首个符合条件的结果 */ public boolean dbExist(String tableName, HashMap selConditions) { dbConnection(); String selCondition = ""; if (selConditions != null && !selConditions.isEmpty()) { for (Entry kvs : selConditions.entrySet()) { selCondition += kvs.getKey() + "='" + kvs.getValue() + "', "; } selCondition = " WHERE " + selCondition.substring(0, selCondition.length() - 2);// 根据String的索引提取子串 } String sql = "SELECT * FROM " + tableName + selCondition; try { dbstate = dbconn.createStatement(); dbresult = dbstate.executeQuery(sql); return dbresult.next(); } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); } return false; } /** * 对数据库表进行选择操作! * * @param tableName * 数据库表名 * @param fieles * 字段名 * @param selCondition * 选择条件 * @return 首个符合条件的结果 */ public String dbSelectFirst(String tableName, String fields, HashMap selConditions) { dbConnection(); String selFieldsTem = fields; String selCondition = ""; if (selConditions != null && !selConditions.isEmpty()) { for (Entry kvs : selConditions.entrySet()) { selCondition += kvs.getKey() + "='" + kvs.getValue() + "', "; } selCondition = " WHERE " + selCondition.substring(0, selCondition.length() - 2);// 根据String的索引提取子串 } String sql = "SELECT " + selFieldsTem + " FROM " + tableName + selCondition + " limit 1"; try { dbstate = dbconn.createStatement(); dbresult = dbstate.executeQuery(sql); if (dbresult.next()) { return dbresult.getString(fields); } } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); } return null; } /** * 对数据库表进行选择操作! * * @param tableName * 数据库表名 * @param fieles * 字段名 * @param selCondition * 选择条件 * @return 一个含有map的List(列表) */ @SuppressWarnings({ "rawtypes", "unchecked" }) public List dbSelect(String tableName, List fields, String selCondition) { dbConnection(); List mapInList = new ArrayList(); String selFields = ""; for (int i = 0; i < fields.size(); ++i) selFields += fields.get(i) + ", "; String selFieldsTem = selFields.substring(0, selFields.length() - 2);// 根据String的索引提取子串 String sql = "SELECT " + selFieldsTem + " FROM `" + tableName + "`" + selCondition == "" ? "" : " WHERE " + selCondition; try { dbstate = dbconn.createStatement(); try { dbresult = dbstate.executeQuery(sql); } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); } while (dbresult.next()) { Map selResult = new HashMap(); for (String col : fields) { selResult.put(col, dbresult.getString(col)); } mapInList.add(selResult); } } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); } return mapInList; }// end String dbSelect(…) /** * 对数据库表中的记录进行删除操作 * * @param tableName * @param condition * @return bool值,表示删除成功或者失败。 */ public boolean dbDelete(String tableName, HashMap selConditions) {// ——–>>>删除操作 dbConnection(); String selCondition = ""; if (selConditions != null && !selConditions.isEmpty()) { for (Entry kvs : selConditions.entrySet()) { selCondition += kvs.getKey() + "='" + kvs.getValue() + "', "; } selCondition = " WHERE " + selCondition.substring(0, selCondition.length() - 2);// 根据String的索引提取子串 } String sql = "DELETE FROM `" + tableName + "` " + selCondition; try { dbstate.executeUpdate(sql); return true; } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); return false; } }// end dbDelete(…) /** * 对数据库表中记录进行更新操作 * * @param tabName * @param reCount * @return bool值,成功返回true,失败返回false */ @SuppressWarnings({ "rawtypes" }) public boolean dbUpdate(String tabName, HashMap reCount, String upCondition) { dbConnection(); String Values = ""; Iterator keyValues = reCount.entrySet().iterator(); for (int i = 0; i < reCount.size(); ++i) { Map.Entry entry = (Map.Entry) keyValues.next(); Object key = entry.getKey(); Object value = entry.getValue(); Values += key + "='" + value + "'" + ", "; } String updateValues = Values.substring(0, Values.length() - 2); String sql = "UPDATE `" + tabName + "` SET " + updateValues + " " + upCondition; try { dbstate.executeUpdate(sql); return true; } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); return false; } }// end dbUpdate(…) /** * 对数据库表进行插入操作 * * @param tabName * - 表名 * @param values * - 带键值的HashMap * @return bool值,成功返回true,失败返回false */ public boolean dbInsert(String tabName, HashMap values) { dbConnection(); String sql = ""; String insertFields = ""; String insertValues = ""; for (Entry kvs : values.entrySet()) { insertFields += "`" + kvs.getKey() + "`, "; insertValues += "'" + kvs.getValue() + "', "; } insertFields = insertFields.substring(0, insertFields.length() - 2); insertValues = insertValues.substring(0, insertValues.length() - 2); sql += "INSERT INTO `" + tabName + "` (" + insertFields + ") VALUES" + "(" + insertValues + ")"; try { dbstate.executeUpdate(sql); return true; } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); print("SQL查询语句: " + sql); return false; } }// end dbInsert(…) /** * 断开数据库 * * @return bool值,成功返回true,失败返回false */ public boolean dbClose() { try { dbconn.close(); return true; } catch (Exception e) { print("数据库操作出错: " + e.getMessage()); return false; } }// end dbClose() }