版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/itsxwz/article/details/84582692
一、
C#编写的一个数据库管理类,适用MySQL、MariaDB。
Unity2017.3.1f1 && mariadb-10.0.12-winx64
二、
根据 http://www.w3school.com.cn/sql/index.asp 里面的语句编写增删改查四类方法。(基本语句增删改查会写了->高级语句会写了->其他数据库语句会写了。 略略略)
三、
类结构:
- 打开/关闭数据库
- 创建表 (新建,不是覆写)
- 创建id自增表
- 插入一行部分值 (不适合id自增表)
- 插入一行所有值
- 删除一行
- 删除多行
- 删除所有行
- 改变一行某一列
- 改变一行某些列
- 查询某一列
- 查询某些列
- 查询所有列
- 执行SQL语句
四、
数据库管理类
/*
*R0-V1.0
*Modify Date:2018-11-27
*Modifier:ZoJet
*Modify Reason:管理数据库
*Modify Content:
*/
using UnityEngine;
using MySql.Data.MySqlClient;
using System;
using System.Data;
public class SqlManager : MonoBehaviour {
#region -- 变量定义
public MySqlConnection sqlConnecter;//连接器
public string host = "127.0.0.1";//192.168.1.1 127.0.0.1 localhost
//与MySQL数据库对应
public string db = "test";
public string id = "root";
public string password = "root";
public string port = "3306";
#endregion
#region -- 自定义函数
/// <summary>
/// 打开数据库
/// </summary>
public void OpenSql() {
try {
string str = string.Format("Host={0};Database={1};User ID={2};Password={3};Port={4}", host, db, id, password, port);
sqlConnecter = new MySqlConnection(str);
sqlConnecter.Open();
} catch(Exception e) {
throw new Exception(e.Message.ToString());
}
}
/// <summary>
/// 关闭数据库
/// </summary>
public void CloseSql() {
if(sqlConnecter != null) {
sqlConnecter.Close();
sqlConnecter.Dispose();
sqlConnecter = null;
}
}
/// <summary>
/// 执行语句
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public DataSet ExcuteStatements(string str) {
if(sqlConnecter.State == ConnectionState.Open) {
DataSet dataSet = new DataSet();
try {
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(str, sqlConnecter);
mySqlDataAdapter.Fill(dataSet);
} catch (Exception e) {
throw new Exception(e.Message.ToString());
} finally { }
return dataSet;
}
return null;
}
/// <summary>
/// 创建表
/// </summary>
/// <param name="name">表名</param>
/// <param name="datas">数据</param>
/// <param name="types">数据类型</param>
/// <returns></returns>
public DataSet CreateTable(string name, string[] datas, string[] types) {
if(datas.Length != types.Length) {
throw new Exception("Wrong Input");
}
string query = "CREATE TABLE " + name + "(" + datas[0] + " " + types[0];
for(int i = 1; i < datas.Length; i++) {
query += "," + datas[i] + " " + types[i];
}
query += ")";
return ExcuteStatements(query);
}
/// <summary>
/// 创建id自增的表
/// </summary>
/// <param name="name">表名</param>
/// <param name="datas">数据</param>
/// <param name="types">数据类型</param>
/// <returns></returns>
public DataSet CreateAutoIDTable(string name,string[] datas,string[] types) {
if(datas.Length != types.Length) {
throw new Exception("Wrong Input");
}
string query = "CREATE TABLE " + name + "(" + datas[0] + " " + types[0] + " NOT NULL AUTO_INCREMENT";
for(int i = 1; i < datas.Length; i++) {
query += ", " + datas[i] + " " + types[i];
}
query += ", PRIMARY KEY (" + datas[0] + ")" + ")";
return ExcuteStatements(query);
}
/// <summary>
/// 插入一行指定列的值(不可用于自增id的表)
/// INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="colNames">列名</param>
/// <param name="colValues">值</param>
/// <returns></returns>
public DataSet InsertPartRow(string tableName,string[] colNames,string[] colValues) {
if(colNames.Length != colValues.Length) {
throw new Exception("Wrong Input");
}
string query = "INSERT INTO " + tableName + " (" + colNames[0];
for(int i = 1; i < colNames.Length; i++) {
query += ", " + colNames[i];
}
query += ") VALUES (" + "'" + colValues[0] + "'";
for(int i = 1; i < colValues.Length; i++) {
query += ", " + "'" + colValues[i] + "'";
}
query += ")";
return ExcuteStatements(query);
}
/// <summary>
/// 插入一行所有列的值
/// INSERT INTO 表名称 VALUES (值1, 值2,....)
/// </summary>
/// <param name="tableName"></param>
/// <param name="colName"></param>
/// <returns></returns>
public DataSet InsertFullRow(string tableName,string[] colValues) {
string query = "INSERT INTO " + tableName + " VALUES (" + "'" + colValues[0] + "'";
for(int i = 1; i < colValues.Length; i++) {
query += ", " + "'" + colValues[i] + "'";
}
query += ")";
return ExcuteStatements(query);
}
/// <summary>
/// 删除某一行
/// DELETE FROM 表名称 WHERE 列名称 = 值
/// </summary>
/// <param name="tableName"></param>
/// <param name="colName"></param>
/// <param name="colValue"></param>
/// <returns></returns>
public DataSet DeleteOneRow(string tableName,string colName,string colValue) {
string query = "DELETE FROM " + tableName + " WHERE " + colName + " = " + "'" + colValue + "'";
return ExcuteStatements(query);
}
/// <summary>
/// 删除多行 (满列则删除所有行)
/// DELETE FROM 表名称 WHERE 列名称 IN (值1, 值2, ...)
/// </summary>
/// <param name="tableName"></param>
/// <param name="colName"></param>
/// <param name="colValues"></param>
/// <returns></returns>
public DataSet DeleteMultipleRows(string tableName,string colName,string[] colValues) {
string query = "DELETE FROM " + tableName + " WHERE " + colName + " IN (" + colValues[0];
for(int i = 1; i < colValues.Length; i++) {
query += ", " + colValues[i];
}
query += ")";
return ExcuteStatements(query);
}
/// <summary>
/// 删除所有行
/// 1. DELETE FROM 表名称
/// 2. DELETE * FROM 表名称
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public DataSet DeleteAllRows(string tableName) {
string query = "DELETE FROM " + tableName;
return ExcuteStatements(query);
}
/// <summary>
/// 更新某一行的一个列
/// UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
/// </summary>
/// <param name="tableName"></param>
/// <param name="updateColName"></param>
/// <param name="updateColValue"></param>
/// <param name="selectColName"></param>
/// <param name="selectColValue"></param>
/// <returns></returns>
public DataSet UpdateOneCol(string tableName,string updateColName,string updateColValue,string selectColName,string selectColValue) {
string query = "UPDATE " + tableName + " SET " + updateColName + " = " + "'" + updateColValue + "'" + " WHERE " +
selectColName + " = " + "'" + selectColValue + "'";
return ExcuteStatements(query);
}
/// <summary>
/// 更新某一行的若干列 (满列值则更新一整列)
/// UPDATE 表名称 SET 列名称 = 新值 , 列名称 = 新值 , 列名称 = 新值 ... WHERE 列名称 = 某值
/// </summary>
/// <param name="tableName"></param>
/// <param name="updateColNames"></param>
/// <param name="updateColValues"></param>
/// <param name="selectColName"></param>
/// <param name="selectColValue"></param>
/// <returns></returns>
public DataSet UpdateMultipleCols(string tableName,string[] updateColNames,string[] updateColValues,string selectColName,string selectColValue) {
if(updateColNames.Length != updateColValues.Length) {
throw new Exception("Wrong Input");
}
string query = "UPDATE " + tableName + " SET " + updateColNames[0] + " = " + "'" + updateColValues[0] + "'";
for(int i = 1; i < updateColNames.Length; i++) {
query += ", " + updateColNames[i] + " = " + "'" + updateColValues[i] + "'";
}
query += " WHERE " + selectColName + " = " + "'" + selectColValue + "'";
return ExcuteStatements(query);
}
/// <summary>
/// 查询某一列
/// SELECT 列名称 FROM表名称
/// </summary>
/// <param name="tableName"></param>
/// <param name="colName"></param>
/// <returns></returns>
public DataSet SelectOneCol(string tableName,string colName) {
string query = "SELECT " + colName + " FROM " + tableName;
return ExcuteStatements(query);
}
/// <summary>
/// 查询多列 (满列名则查询整表)
/// SELECT 列名称,列名称... FROM 表名称
/// </summary>
/// <param name="tableName"></param>
/// <param name="colNames"></param>
/// <returns></returns>
public DataSet SelectMultipleCols(string tableName,string[] colNames) {
string query = "SELECT " + colNames[0];
for(int i = 1; i < colNames.Length; i++) {
query += "," + colNames[i];
}
query += " FROM " + tableName;
return ExcuteStatements(query);
}
/// <summary>
/// 查询整表
/// SELECT * FROM 表名称
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public DataSet SelectAllCols(string tableName) {
string query = "SELECT * FROM " + tableName;
return ExcuteStatements(query);
}
#endregion
}
五、
DEMO:https://github.com/86K/Data2Database (Test中所有语句测试无误)
ps : 感谢大佬们打小星星