CTZLoginServer/src/cn/citycraft/CTZLoginServer/utils/MySqlHelper.java

341 lines
10 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String, String> fields, String Conditions) {
dbConnection();
String kv = "";
for (Entry<String, String> 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<String, String> selConditions) {
dbConnection();
String selCondition = "";
if (selConditions != null && !selConditions.isEmpty()) {
for (Entry<String, String> 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<String, String> selConditions) {
dbConnection();
String selFieldsTem = fields;
String selCondition = "";
if (selConditions != null && !selConditions.isEmpty()) {
for (Entry<String, String> 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<String> 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<String, String> selConditions) {// ——–>>>删除操作
dbConnection();
String selCondition = "";
if (selConditions != null && !selConditions.isEmpty()) {
for (Entry<String, String> 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<String, String> values) {
dbConnection();
String sql = "";
String insertFields = "";
String insertValues = "";
for (Entry<String, String> 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()
}