系列一:Unity数据之SQL增删改查

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 里面的语句编写增删改查四类方法。(基本语句增删改查会写了->高级语句会写了->其他数据库语句会写了。 略略略)

三、
类结构:

  1. 打开/关闭数据库
  2. 创建表 (新建,不是覆写)
  3. 创建id自增表
  4. 插入一行部分值 (不适合id自增表)
  5. 插入一行所有值
  6. 删除一行
  7. 删除多行
  8. 删除所有行
  9. 改变一行某一列
  10. 改变一行某些列
  11. 查询某一列
  12. 查询某些列
  13. 查询所有列
  14. 执行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 : 感谢大佬们打小星星

猜你喜欢

转载自blog.csdn.net/itsxwz/article/details/84582692
今日推荐