在unity环境下封装的mysql库

45 篇文章 0 订阅
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Collections;
using UnityEngine;
/// <summary>
/// 与sqlite 的用法是一致的
/// </summary>
public class MySQLManager
{
    //数据库
    private static MySqlConnection mCon;
    private static MySqlCommand mCommand;
    private static MySqlDataReader mReader;
    //数据库地址
    private static string mysqlPath;
    //连接数据库 封存储存地址 需要输入数据库名称参数 打开数据库
    /// <summary>
    /// 打开数据库
    /// </summary>
    /// <param name="dataBaseName"> 被打开的数据库的名字 </param>
    public static void OpenConnectMySql(string dataBaseName)
    {
        //获取数据库的名称
        string conDataBaseName = dataBaseName;
        //连接数据库
        mysqlPath = "Database=" + dataBaseName + ";" + "Data Source=127.0.0.1;User Id=root;Password=1234;pooling=false;CharSet=utf8;port=3306";
        mCon = new MySqlConnection(mysqlPath);
        //试图打开数据库
        try
        {
            mCon.Open();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
        }

    }
    /// <summary>
    /// 关闭数据库
    /// </summary>
    public static void CloseConnectMySql()
    {
        try
        {
            if (mCon != null)
            {
                mCon.Close();
            }
        }
        catch (Exception ex)
        {

            Debug.Log(ex);
        }
    }

    /// <summary>
    /// 执行语句 只用于增删改
    /// </summary>
    private static void Execute(string query)
    {
        //赋值
        query += ";";//末尾可以不加分号
        mCommand = new MySqlCommand(query, mCon);
        mCommand.ExecuteNonQuery();
    }
    public static void CreateDataBase(string dataBaseName)
    {
        string query = "Create DataBase " + dataBaseName + ";";
        Execute(query);
    }
    /// <summary>
    /// 创建数据表
    /// </summary>
    /// <param name="tableName"> 表名</param>
    /// <param name="cols"> 列名</param>
    /// <param name="colType"> 列的类型</param>
    public static void CreateTable(string tableName, string[] cols, string[] colType)
    {
        if (cols.Length != colType.Length)
        {
            throw new System.Exception("cols.Length != colType.Length");
        }
        //create table 'LOL'('Name' text, 'Num' float)
        string query = "Create Table " + tableName + " (" + cols[0] + " " + colType[0];
        for (int i = 1; i < cols.Length; i++)
        {
            query += ", " + cols[i] + " " + colType[i];
        }
        query += ")";
        Execute(query);
    }
    /// <summary>
    /// 增加一行数据
    /// </summary>
    /// <param name="tableName"> 表名</param>
    /// <param name="values"> 数值组</param>
    public static void InsertIntoMySql(string tableName, string[] values)
    {
        //string qu = "Insert Into QQ Values('','','')";
        //string query2 = "Insert Into QQ Values('" + inputName.text + "','" + inputPaw.text + "')";
        //query 是一个字符串  所以只要把sql  语句拼接起来就行
        string query = "Insert Into " + tableName + " Values ('" + values[0] + "'";
        for (int i = 1; i < values.Length; ++i)
        {
            query += ",'" + values[i] + "'";
        }
        query += ")";
        Execute(query);

    }
    /// <summary>
    /// 第二种插入方式 选择性插入某一行的某些列
    /// </summary>
    /// <param name="tableName"></param>
    /// <param name="cols"></param>
    /// <param name="colsValues"></param>
    public static void InsertIntoMySqlSpecific(string tableName, string[] cols, string[] colsValues)
    {
        if (cols.Length != colsValues.Length)
        {
            throw new System.Exception("cols.Length != colsValues.Length");
        }
        // string query2= insert into Student (Name, num) values('xiao', '98')

        string query = "Insert Into " + tableName + " ( " + cols[0] + "";
        for (int i = 1; i < cols.Length; i++)
        {
            query += "," + cols[i];
        }
        query += ") Values('";
        query += colsValues[0] + "'";
        for (int i = 1; i < colsValues.Length; i++)
        {
            query += ",'" + colsValues[i] + "'";
        }
        query += ")";
        Execute(query);
    }

    /// <summary>
    /// 更改某一行某一列的值的数据
    /// </summary>
    /// <param name="tableName"> 表名</param>
    /// <param name="cols"> 要修改的列数组 </param>
    /// <param name="colsValues"> 修改的那一列为新值 </param>
    /// <param name="selectKey"> 修改哪一行 </param>
    /// <param name="selectValues"> 修改那一行的键的数值 </param>
    public static void UpdateMySql(string tableName, string cols, string colsValues, string selectKey, string selectValues)
    {
        //string query2 = " update Student set Name = 'xiaoming' where Num = '90'";
        string query = " Update " + tableName + " set " + cols + " = '" + colsValues + "'  ";
        query += " where  " + selectKey + " = '" + selectValues + "' ";
        Execute(query);
    }

    /// <summary>
    /// 更改某一行某几列的数据(可以更改多列) 
    /// 如果只想改某一列数据 数组只需附一个值就行
    /// </summary>
    /// <param name="tableName"> 表名</param>
    /// <param name="cols"> 要修改的列数组 </param>
    /// <param name="colsValues"> 修改的那一列为新值 </param>
    /// <param name="selectKey"> 修改哪一行 </param>
    /// <param name="selectValues"> 修改那一行的键的数值 </param>
    public static void UpdateMySql(string tableName, string[] cols, string[] colsValues, string selectKey, string selectValues)
    {
        //string query2 = " update Student set Name = 'xiaoming' where Num = '90'";
        //update Student set Name = 'xiaoming', Age = '60' where Num = '90'
        string query = " Update " + tableName + " set " + cols[0] + " = '" + colsValues[0] + "'  ";
        for (int i = 1; i < colsValues.Length; i++)
        {
            query += ",";
            //不加“++” 因为这里加的是clos[1]表示的字符串  而上面是赋值 给query时 加“+ +”
            query += cols[i];
            query += "='" + colsValues[i] + "'";
        }
        query += " where  " + selectKey + " = '" + selectValues + "' ";
        Execute(query);
    }

    /// <summary>
    /// 删除 只给一个条件的
    /// </summary>
    /// <param name="tableName"> 表名</param>
    /// <param name="cols"> 列名数组</param>
    /// <param name="colsValues"> 要删除那一行 的对应的列的值 </param>
    public static void Delete(string tableName, string cols, string colsValues)
    {
        string query = "Delete from " + tableName + " where " + cols + " = '" + colsValues + "'";
        Execute(query);
    }
    /// <summary>
    /// 删除某一行多个条件
    /// 如果只想给一个条件 数组只需赋值一个就行
    /// </summary>
    /// <param name="tableName"> 表名</param>
    /// <param name="cols"> 列名数组</param>
    /// <param name="colsValues"> 要删除那一行 的对应的列的值 </param>
    public static void Delete(string tableName, string[] cols, string[] colsValues)
    {
        //delete from Student where Name='xiaoming' or Age= '15'
        string query = "Delete from " + tableName + " where " + cols[0] + " = '" + colsValues[0] + "'";
        for (int i = 1; i < colsValues.Length; i++)
        {
            //或者另外一列表示那一行
            query += "or";
            query += cols[i];
            query += "='" + colsValues[i] + "'";
        }
        Execute(query);
    }

    /// <summary>
    /// 删除某一个整表
    /// </summary>
    /// <param name="tableName"> 表名</param>
    public static void DeleteAll(string tableName)
    {
        string query = "Delete From" + tableName + "";
        Execute(query);
    }

    /// <summary>
    /// 查询不加条件的
    /// 执行查询语句 返回一个ArrayList 类型的链表 
    /// ArrayList相当于每一行的数据 然后一行一行的加到list中
    /// </summary>
    /// <param name="tableName"></param>
    /// <param name="cols"> 列数组可写一个 </param>
    public static List<ArrayList> Select(string tableName, string[] cols)
    {
        // string query = "Select  Name,Num  From " + tableName + " ";
        string query = "Select " + cols[0] + "";
        for (int i = 1; i < cols.Length; i++)
        {
            query += "," + cols[i];

        }
        query += " From " + tableName + "";
        List<ArrayList> list = ReaderExecute(query);
        return list;
    }

    /// <summary>
    /// 查询整个表
    /// 执行查询语句 返回一个ArrayList 类型的链表 
    /// ArrayList相当于每一行的数据 然后一行一行的加到list中
    /// </summary>
    /// <param name="tableName"></param>
    public static List<ArrayList> Select(string tableName)
    {
        // string query = "Select * From" + tableName + "";
        string query = "Select*From " + tableName + "";
        List<ArrayList> list = ReaderExecute(query);
        return list;
    }

    /// <summary>
    /// 查询整个表格里 带一个条件的
    /// 执行查询语句 返回一个ArrayList 类型的链表 
    /// ArrayList相当于每一行的数据 然后一行一行的加到list中
    /// </summary>
    /// <param name="tableName"></param>
    /// <param name="keyCols"> 条件列</param>
    /// <param name="keyValues"> 列值</param>
    public static List<ArrayList> SelectSingleWhere(string tableName, string keyCols, string keyValues)
    {
        // string query = "Select*From " + tableName + " where Name = 'dhl'";

        string query = "Select*From " + tableName + " where " + keyCols + " = '" + keyValues + "'";
        List<ArrayList> list = ReaderExecute(query);
        return list;
    }

    /// <summary>
    /// 查询待条件的 如果只查询出一列  数组只需赋值一个
    /// 执行查询语句 返回一个ArrayList 类型的链表 
    /// ArrayList相当于每一行的数据 然后一行一行的加到list中
    /// </summary>
    /// <param name="tableName"></param>
    /// <param name="cols"> 查询的列名数组 </param>
    /// <param name="keyCols"></param>
    /// <param name="keyValues"></param>
    public static List<ArrayList> SelectWhere(string tableName, string[] cols, string keyCols, string keyValues)
    {
        //string querya = "Select Name From Student Where Number=666";
        //select  Name ,Num from Student where Age='20'
        string query = "Select  " + cols[0] + "";
        for (int i = 1; i < cols.Length; i++)
        {
            query += ",";
            query += cols[i];
        }
        query += " From " + tableName + " where ";
        query += keyCols + "='";
        query += keyValues;
        query += "'";
        List<ArrayList> list = ReaderExecute(query);
        return list;
    }
    /// <summary>
    /// 执行查询语句 返回一个ArrayList 类型的链表 
    /// ArrayList相当于每一行的数据 然后一行一行的加到list中
    /// </summary>
    /// <param name="query"></param>
    /// <returns></returns>
    public static List<ArrayList> ReaderExecute(string query)
    {
        Execute(query);
        MySqlDataReader reader = mCommand.ExecuteReader();
        List<ArrayList> list = new List<ArrayList>();
        while (reader.Read())
        {
            //返回结果的列数
            int count = reader.FieldCount;
            ArrayList temp = new ArrayList();
            //遍历所有的列

            for (int i = 0; i < count; i++)
            {
                temp.Add(reader.GetValue(i));
            }
            list.Add(temp);
        }
        //读完之后关闭
        reader.Close();
        return list;

    }
    /// <summary>
    /// 数据库降序
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="keyCols">关键列</param>
    /// <returns></returns>
    public static List<ArrayList> Desc(string tableName, string keyCols)
    {
        string query = "Select*From " + tableName + " ORDER BY " + keyCols + " DESC";
        List<ArrayList> list = ReaderExecute(query);
        return list;
    }
    /// <summary>
    /// 数据库升序
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="keyCols">关键列</param>
    /// <returns></returns>
    public static List<ArrayList> Asc(string tableName, string keyCols)
    {
        string query = "Select*From " + tableName + " ORDER BY " + keyCols + " ASC";
        List<ArrayList> list = ReaderExecute(query);
        return list;
    }
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值