Unity使用Mysql(添/删/改/查)(保姆级)

UnityDemo版本

    Unity版本:2020.3.25;
    Visual Studio版本: 2019;MySql.Data.dll版本:5.2.3
    MySql版本:5.7.35

数据库下载地址教程

数据库下载地址

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
下载完成后解压到任意盘即可(楼主我选择的是D盘)
点击查看
在这里插入图片描述
勾选文件扩展名
在这里插入图片描述
右键新建文本文档 修改名称My.ini
在这里插入图片描述
修改后
在这里插入图片描述

打开my.ini 把以下文本复制到里面去 设置basedir(你的安装目录)
和datadir(数据库存放路径 注意:定义路径一定要有data文件夹)

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录   ----------是你的文件路径-------------
basedir=D:\mysql-5.7.35-winx64
# 设置mysql数据库的数据的存放目录  ---------是你的文件路径data文件夹自行创建
datadir=D:\MysqlData\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

按下Win+R 输入cmd 然后回车
在这里插入图片描述

右键点击命令提示符 左键点击以管理员运行
在这里插入图片描述

先输入D: 回车
然后输入 cd 解压出来bin文件路径
在这里插入图片描述
然后在控制台输入指令

mysqld --install

在这里插入图片描述
如上图代表成功
接下来在控制台输入命令

mysqld --initialize --console

在这里插入图片描述
输入后稍等一会,才会显示随机出来密码
记下你随机出来密码 楼主随机出来密码是 VPWuVnRro3:)
输入以下指令启动Mysql服务器

net start mysql

在这里插入图片描述
如上图表示成功

登录Mysql服务器输入

mysql -u root -p

在这里插入图片描述
上图输入你的随机密码
楼主随机出来密码是 VPWuVnRro3:)
在这里插入图片描述
如上图显示就成功了
登录成功可以修改密码为123456
输入指令

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

在这里插入图片描述
如上图成功
安装完成在控制台 输入quit和exit 退出

quit
exit

在这里插入图片描述
接下来进行环境搭配
此电脑右键->属性->高级系统设置
在这里插入图片描述
在这里插入图片描述
新建系统变量

在这里插入图片描述
变量名为:MYSQL_HOME
变量值为你的MySQL安装路径
点击确定
在这里插入图片描述
找到path进行编辑
在这里插入图片描述
新建环境变量
变量为:%MYSQL_HOME%\bin

%MYSQL_HOME%\bin

在这里插入图片描述
在桌面找到此电脑右键此电脑->管理->服务与应用程序->服务

在这里插入图片描述

找到mysql->右键属性
将启动类型改为手动(防止开机速度变慢)
在这里插入图片描述

以上操作已经完成Mysql环境搭建
每次开机以管理员身份打开控制台输入命令

net start mysql

在这里插入图片描述

可视化窗口下载教程

可视化窗口下载

使用可视化窗口

点击连接

在这里插入图片描述
在点击mysql 最后弹出以下窗口
在这里插入图片描述
点击高级 自定义设置位置
在这里插入图片描述

然后点击确定
在这里插入图片描述

连接成功如下图
在这里插入图片描述

打开数据库出现以下界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后点击保存 弹出以下图
在这里插入图片描述
在这里插入图片描述

dll下载地址

dll下载地址

本次Demo下载地址

本次Demo下载地址

下载好后直接把资源包直接放进Assets文件中 运行如下环境配置成功
在这里插入图片描述
如果下载地址丢失请看下面

1:导入Unity安装目录下的必要程序集、I18N.CJK、I18N、I18N.West;
(因为2020版的Unity默认加载了System.Data.dll,System.Drawing.dll,所以不用再次导入)
安装目录路劲为:Editor\Data\MonoBleedingEdge\lib\mono\unityjit
(注意一定是这个目录下的几个程序集,其他的尝试后无效并且报错)
在这里插入图片描述
在Unity Assets 新建Plugins文件 把这三个文件夹 放到里面去 最后在把Mysql.data.dll 也放进去图下
在这里插入图片描述

本项目脚本 SqlHelper Mysql访问类

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using MySql.Data.MySqlClient;
using UnityEngine;
/*
 也可以使用using块来套用 Mysql操作类 mysql会自动关闭数据库
 using(var sql = new SqlHelper(填写对应参数))
 {
     //手动打开数据库
     sql.Open();
 }
*/
namespace Imdork.Mysql
{
    /// <summary>
    /// Mysql添/删/改/查 操作类   切记使用该类方法 除了(Connect方法)其他方法 先调用Open() 使用完后 在Close()掉
    /// </summary>
    public class SqlHelper : IDisposable
    {
        string _server, _port, _user, _password, _datename, _format;
        string connectStr;
        MySqlConnection conn;
        /// <summary>
        /// 连接数据库构造方法
        /// </summary>
        /// <param name="host">IP地址</param>
        /// <param name="port">端口</param>
        /// <param name="user">用户名</param>
        /// <param name="passwd">密码</param>
        /// <param name="database">数据库名称</param>
        /// <param name="format">请填写字体</param>
        public SqlHelper(string host, string port, string user, string passwd, string database, string format)
        {
            Connect(host, port, user, passwd, database, format);
        }
        /// <summary>
        /// 连接数据库构造方法
        /// </summary>
        /// <param name="host"></param>
        /// <param name="port"></param>
        /// <param name="user"></param>
        /// <param name="passwd"></param>
        /// <param name="database"></param>
        public SqlHelper(string host, string port, string user, string passwd, string database)
        {
            Connect(host, port, user, passwd, database);
        }

        /// <summary>
        /// 连接数据库
        /// </summary>
        /// <param name="host">IP地址</param>
        /// <param name="port">端口</param>
        /// <param name="user">用户名</param>
        /// <param name="passwd">密码</param>
        /// <param name="database">数据库名称</param>
        /// <param name="format">字体默认utf8</param>
        public void Connect(string host, string port, string user, string passwd, string database, string format = "utf8")
        {
            _server = host;
            _port = port; _user = user;
            _password = passwd;
            _datename = database;
            _format = format;
            connectStr = string.Format("server={0};port={1};user={2};password={3}; database={4};charset={5}", _server, _port, _user, _password, _datename, _format);//设置连接ip,端口,用户名,密码,以及编码格式    
            conn = new MySqlConnection(connectStr);//创建连接类
        }

        /// <summary>
        /// 打开数据库连接
        /// </summary>
        public void Open()
        {
            conn.Open();//正式打开连接 
        }
        /// <summary>
        /// 关闭数据库连接
        /// </summary>
        public void Close()
        {
            conn.Close();//关闭连接
        }

        /// <summary>
        /// using块回收资源时执行
        /// </summary>
        public void Dispose()
        {
            Close();
        }

        #region 查询语句
        /// <summary>
        /// 查询指定字段
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="items"></param>
        /// <returns></returns>
        public DataSet Select(string tableName, string[] items)
        {
            string query = "SELECT " + items[0];
            for (int i = 1; i < items.Length; ++i)
            {
                query += ", " + items[i];
            }
            query += " FROM " + tableName;
            Debug.LogFormat("query: {0}", query);
            return ExecuteQuery(query);
        }
        /// <summary>
        /// 查询所有字段
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <returns></returns>
        public DataSet Select(string tableName)
        {
            string query = "SELECT * FROM " + tableName;
            return ExecuteQuery(query);
        }

        #region 根据条件查询指定字段
        /// <summary>
        /// 查询指定字段数据中满足条件的
        /// DataSet内存中的数据库,DataSet是不依赖于数据库的独立数据集合,是一种不包含表头的纯数据文件
        /// 有条件的查询,查询在users这个表当中,只需要字段名为userAccount,userPwd,userName,ID这几个字段对应的数据,
        /// 满足条件为 userAccount对应的value=account, userPwd对应的value=md5Password;
        /// ("users", new string[] { "userAccount", "userPwd", "userName", "ID" }, new string[] { "userAccount", "userPwd" }, new string[] { "=", "=" }, new string[] { account, md5Password });
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="items">查询字段名</param>
        /// <param name="cols">判断字段名</param>
        /// <param name="operations">条件运算符</param>
        /// <param name="values">满足的条件值</param>
        /// <returns></returns>
        public DataSet SelectWhere(string tableName, string[] items, string[] cols, string[] operations, string[] values)
        {
            if (cols.Length != operations.Length || operations.Length != values.Length)
            {
                throw new Exception("col.Length != operation.Length != values.Length");
            }

            string query = "SELECT " + items[0];

            for (int i = 1; i < items.Length; ++i)
            {
                query += ", " + items[i];
            }

            query += " FROM " + tableName + " WHERE " + cols[0] + operations[0] + "'" + values[0] + "' ";

            for (int i = 1; i < cols.Length; ++i)
            {
                query += " AND " + cols[i] + operations[i] + "'" + values[i] + "' ";
            }
            Debug.LogFormat("query: {0}", query);
            return ExecuteQuery(query);
        }
        #endregion

        #region 根据条件查询全部字段
        /// <summary>
        /// 根据条件查询全部字段
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="cols">判断字段</param>
        /// <param name="operations">判断字符</param>
        /// <param name="values">条件成立数据</param>
        /// <returns></returns>
        public DataSet SelectWhere(string tableName, string[] cols, string[] operations, string[] values)
        {
            if (cols.Length != operations.Length || operations.Length != values.Length)
            {
                throw new Exception("col.Length != operation.Length != values.Length");
            }

            string query = "SELECT *";           

            query += " FROM " + tableName + " WHERE " + cols[0] + operations[0] + "'" + values[0] + "' ";

            for (int i = 1; i < cols.Length; ++i)
            {
                query += " AND " + cols[i] + operations[i] + "'" + values[i] + "' ";
            }
            Debug.LogFormat("query: {0}", query);
            return ExecuteQuery(query);
        }
        #endregion

        /// <summary>
        /// 执行查询语句,返回DataSet
        /// </summary>
        /// <param name="SQLString">查询语句</param>
        /// <returns>DataSet</returns>
        public DataSet ExecuteQuery(string SQLString)
        {
            DataSet ds = new DataSet();
            try
            {
                MySqlDataAdapter da = new MySqlDataAdapter(SQLString, conn);
                da.Fill(ds);
            }
            catch (MySqlException ex)
            {
                throw new Exception(ex.Message);
            }
            return ds;
        }
        #endregion

        #region 更新语句
        /// <summary>
        /// 更新数据 param tableName=表名  selectkey=查找字段(主键) selectvalue=查找内容 cols=更新字段 colsvalues=更新内容
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="selectKeys">查找字段</param>
        /// <param name="selectValues">查找内容</param>
        /// <param name="cols">更新字段</param>
        /// <param name="colsValues">更新数据</param>
        /// <returns></returns>
        public int UpdateIntoSpecific(string tableName, string[] selectKeys, string[] selectValues, string[] cols, string[] colsValues)
        {
            string query = "UPDATE " + tableName + " SET " + cols[0] + " = " + "'" + colsValues[0] + "'";

            for (int i = 1; i < colsValues.Length; ++i)
            {
                query += ", " + cols[i] + " =" + "'" + colsValues[i] + "'";
            }

            query += " WHERE " + selectKeys[0] + " = " + "'" + selectValues[0] + "' ";
            for (int i = 1; i < selectKeys.Length; ++i)
            {
                query += " AND " + selectKeys[i] + " = " + "'" + selectValues[i] + "' ";
            }
            return ExecuteNonQuery(query);
        }
        /// <summary>
        /// 更新数据 param tableName=表名  selectkey=查找字段(主键) operation=判断的符号 selectvalue=查找内容 cols=更新字段 colsvalues=更新内容
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="selectKeys">查找字段</param>
        /// <param name="operation">判断符号</param>
        /// <param name="selectValues">查找内容</param>
        /// <param name="cols">更新字段</param>
        /// <param name="colsValues">更新数据</param>
        /// <returns></returns>
        public int UpdateIntoSpecific(string tableName, string[] selectKeys, string[] operation, string[] selectValues, string[] cols, string[] colsValues)
        {
            string query = "UPDATE " + tableName + " SET " + cols[0] + " = " + "'" + colsValues[0] + "'";

            for (int i = 1; i < colsValues.Length; ++i)
            {
                query += ", " + cols[i] + " =" + "'" + colsValues[i] + "'";
            }

            query += " WHERE " + selectKeys[0] + " " + operation[0] + " " + "'" + selectValues[0] + "' ";
            for (int i = 1; i < selectKeys.Length; ++i)
            {
                query += " AND " + selectKeys[i] + " " + operation[i] + " " + "'" + selectValues[i] + "' ";
            }
            return ExecuteNonQuery(query);
        }    
        #endregion

        #region 插入语句
        /// <summary>
        /// 插入部分ID
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="cols">字段名</param>
        /// <param name="values">具体数值</param>
        /// <returns></returns>
        public int InsertInto(string tableName, string[] cols, string[] values)
        {
            if (cols.Length != values.Length)
            {
                throw new Exception("columns.Length != colType.Length");
            }

            string query = "INSERT INTO " + tableName + " (" + cols[0];
            for (int i = 1; i < cols.Length; ++i)
            {
                query += ", " + cols[i];
            }

            query += ") VALUES (" + "'" + values[0] + "'";
            for (int i = 1; i < values.Length; ++i)
            {
                query += ", " + "'" + values[i] + "'";
            }

            query += ")";
            Debug.LogFormat("query: {0}", query);
            return ExecuteNonQuery(query);
        }
        #endregion

        #region 删除语句

        #region 根据条件删除表
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="cols">字段</param>
        /// <param name="colsValues">字段值</param>
        /// <returns></returns>
        public int Delete(string tableName, string[] cols, string[] colsValues)
        {
            string query = "DELETE FROM " + tableName + " WHERE " + cols[0] + " = " + "'" + colsValues[0] + "'";

            for (int i = 1; i < colsValues.Length; ++i)
            {
                query += " and " + cols[i] + " = " + "'" + colsValues[i] + "'";
            }
            return ExecuteNonQuery(query);
        }
        /// <summary>
        /// 删除表
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="cols"></param>
        /// <param name="operation"></param>
        /// <param name="colsValues"></param>
        /// <returns></returns>
        public int Delete(string tableName, string[] cols, string[] operation, string[] colsValues)
        {
            string query = "DELETE FROM " + tableName + " WHERE " + cols[0] + " " + operation[0] + " " + "'" + colsValues[0] + "'";

            for (int i = 1; i < colsValues.Length; ++i)
            {
                query += " and " + cols[i] + " " + operation[i] + " " + "'" + colsValues[i] + "'";
            }
            return ExecuteNonQuery(query);
        }
        #endregion

        /// <summary> 
        /// 删除表中全部数据
        /// </summary>
        public int DeleteContents(string tableName)
        {
            string query = "DELETE FROM " + tableName;
            return ExecuteNonQuery(query);
        }
        #endregion

        #region 创建表
        /// <summary>
        /// 创建表 param name=表名 col=字段名 colType=字段类型
        /// </summary>
        public int CreateTable(string name, string[] col, string[] colType)
        {
            if (col.Length != colType.Length)
            {
                throw new Exception("columns.Length != colType.Length");
            }
            string query = "CREATE TABLE " + name + " (" + col[0] + " " + colType[0];
            for (int i = 1; i < col.Length; ++i)
            {
                query += ", " + col[i] + " " + colType[i];
            }
            query += ")";
            return ExecuteNonQuery(query);
        }
        #endregion

        /// <summary>
        /// 执行SQL语句,返回影响的记录数。用于Update、Insert和Delete
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <returns>影响的记录数</returns>
        public int ExecuteNonQuery(string SQLString)
        {

            using (MySqlCommand cmd = new MySqlCommand(SQLString, conn))
            {
                try
                {
                    int rows = cmd.ExecuteNonQuery();
                    return rows;
                }
                catch (MySqlException E)
                {
                    throw new Exception(E.Message);
                }
                finally
                {
                    cmd.Dispose();
                }
            }

        }

        
    }
}
  
  

本项目脚本 mysqlTools工具类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
/*
  DataSet类使用方法
  asp.NET中DataSet对象获取相应列值、行列数、列名、取出特定值这些操作的总结,具体代码如下:

  1.  DataSet.Table[0].Rows[ i ][ j ]
      其中i 代表第 i 行数, j 代表第 j 列数

  2. DataSet.Table[0].Rows[ i ].ItemArray[ j ]
      其中i 代表第 i 行数, j 代表第 j 列数

  3. DataSet.Tables[0].Columns.Count
      取得表的总列数

  4. DataSet.Tables[0].Rows.Count
      取得表的总行数

  5. DataSet.Tables[0].Columns[ i ].ToString()
      取得表的 i 列名(字段名)

  6.  ds.Tables.Count - 返回表的数量,一个 select 返回一个 table
*/

namespace Imdork.Mysql
{
    /// <summary>
    /// mysql工具类
    /// </summary>
    public class MysqlTools
    {

        /// <summary>
        /// 获取表中数据 字典中第一个键是字段名  第二个是 对应字段值 返回字典数组
        /// </summary>
        /// <param name="ds">数据表类</param>
        /// <returns></returns>
        public static Dictionary<string, object>[] TableData(DataSet ds)
        {
            //判断是否没有数据
            if (ds.Tables.Count == 0)
            {
                //返回空
                return null;
            }
            //声明集合
            List<Dictionary<string, object>> tableList = new List<Dictionary<string, object>>();
            //遍历DataSet表条数
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                //遍历表该条字段数量
                for (int j = 0; j < ds.Tables[i].Rows.Count; j++)
                {
                    //根据该条数 并新建一块字典空间存储到该字典中
                    tableList.Add(new Dictionary<string, object>());
                    //存储该条数类对象
                    var temp = ds.Tables[i];
                    //获取该条所有字段值
                    var obj = temp.Rows[j].ItemArray;
                    //遍历所有字段数组
                    for (int k = 0; k < obj.Length; k++)
                    {
                        //获取该字段名称
                        string tableName = temp.Columns[k].ToString();
                        //根据字段名称 和对应字段值存储到字段中
                        tableList[j].Add(tableName, obj[k]);
                    }
                }
            }
            //返回字典数组
            return tableList.ToArray();
        }
        /// <summary>
        /// 获取单个数据
        /// </summary>
        /// <param name="ds">数据表类</param>
        /// <param name="Name">字段名称</param>
        /// <returns></returns>
        public static object GetValue(DataSet ds, string Name)
        {
            //判断是否没有数据
            if (ds.Tables.Count == 0)
            {
                //返回空
                return null;
            }

            //遍历DataSet表条数
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                //遍历表该条字段数量
                for (int j = 0; j < ds.Tables[i].Rows.Count; j++)
                {
                    //存储该条数类对象
                    var temp = ds.Tables[i];
                    //获取该条所有字段值
                    var obj = temp.Rows[j].ItemArray;
                    //遍历所有字段数组
                    for (int k = 0; k < obj.Length; k++)
                    {
                        //获取该字段名称
                        string tableName = temp.Columns[k].ToString();
                        //判断该字段名称是否等于Name
                        if (tableName == Name)
                        {
                            //返回数据
                            return obj[k];
                        }
                    }
                }
            }
            //返回null
            return null;
        }
        /// <summary>
        /// 获取多个数据
        /// </summary>
        /// <returns></returns>
        public static object[] GetValues(DataSet ds, string Name)
        {
            //判断是否没有数据
            if (ds.Tables.Count == 0)
            {
                //返回空
                return null;
            }
            //声明字段集合
            List<object> list = new List<object>();
            //遍历DataSet表条数
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                //遍历表该条字段数量
                for (int j = 0; j < ds.Tables[i].Rows.Count; j++)
                {
                    //存储该条数类对象
                    var temp = ds.Tables[i];
                    //获取该条所有字段值
                    var obj = temp.Rows[j].ItemArray;
                    //遍历所有字段数组
                    for (int k = 0; k < obj.Length; k++)
                    {
                        //获取该字段名称
                        string tableName = temp.Columns[k].ToString();
                        //判断该字段名称是否等于Name
                        if (tableName == Name)
                        {
                            //存储到集合中
                            list.Add(obj[k]);
                        }
                    }
                }
            }
            //返回数组
            return list.ToArray();
        }
    }

}

本项目脚本Test 测试脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Imdork.Mysql;

public class Test : MonoBehaviour
{

    void Start()
    {
        //创建数据库类                 IP地址       端口    用户名   密码     数据库项目名称
        var mySqlTools = new SqlHelper("127.0.0.1", "3306", "root", "123456", "user");
        //打开数据库
        mySqlTools.Open();

        //创建表方法              表名       字段名称                              字段类型
        //mySqlTools.CreateTable("userdata", new[] { "UID", "User","Password" }, new[] { "tinytext", "tinytext", "tinytext" });

        //查询方法
        FindMysql(mySqlTools, "userdata", new[] { "UID", "User", "Password" });

        //  插入方法                表名         字段名                             插入数据
        //mySqlTools.InsertInto("userdata", new[] { "UID", "User", "Password" },new[] {"52022","ddxj1","123456" });

        //  更新方法                      表名         更新字段名    判断符号         更新数据          查询条件字段        条件成立字段
        //mySqlTools.UpdateIntoSpecific("userdata", new[] { "User" }, new[] { "=" }, new[] { "ddxj1" }, new[] { "Password" }, new[] { "456789" });

        //  删除方法         表名          删除字段        判断条件     条件成立数据         
        //mySqlTools.Delete("userdata", new[] { "User" }, new[] { "=" }, new[] { "ddxj1" });

        // 从SqlHelper查询出来数据库 都会返回Dataset  DataSet类               字段名
        //       返回对象object     获取数据方法    
        // var GetValues = MysqlTools.GetValue(mySqlTools.Select("userdata"), "User");
        //print(GetValues);

        //查询方法                         表名        查询字段名         判断字段名       判断符号        条件成立数据
        // var ds = mySqlTools.SelectWhere("userdata", new[] { "UID" }, new[] { "User" }, new[] { "=" }, new[] { "ddxj1" });
        //查询方法                         表名         判断字段名       判断符号        条件成立数据
        // var ds = mySqlTools.SelectWhere("userdata", new[] { "User" }, new[] { "=" }, new[] { "ddxj1" });

        //SelectWhere方法会返回Dataset类对象, 声明ds变量接收如上图
        //MysqlTools 工具类使用GetValue方法负责接收DataSet对象 给字段名称返回对应数据
        //调用MysqlTools 工具类                 Dataset类对象  查询字段
        //object values = MysqlTools.GetValue(ds, "UID");
        //print(values); //最后打印15924

       // mySqlTools.DeleteContents("userdata"); 删除表中全部数据


        //关闭数据库
        mySqlTools.Close();

        
    }

    /// <summary>
    /// 查询表中数据   记得先调用Open()方法  用完此方法后直接Close()
    /// </summary>
    /// <param name="mySqlTools">Mysql框架类</param>
    /// <param name="tableName">表名</param>
    /// <param name="items">字段名称</param>
    void FindMysql(SqlHelper mySqlTools,string tableName,string[] items)
    {
        var ds = mySqlTools.Select(tableName, items);
        var pairs = MysqlTools.TableData(ds);
        DebugMysql(pairs);      
    }
    /// <summary>
    /// 打印查询数据库
    /// </summary>
    /// <param name="pairs"></param>
    private void DebugMysql(Dictionary<string,object>[] pairs)
    {
        for (int i = 0; i < pairs.Length; i++)
        {
            foreach (var table in pairs[i])
            {
                string tableList = string.Format("第{0}行,表字段名对应数据是 {1}", i + 1, table);
                print(tableList);
            }
        }  
    }
      
}
 
 

使用数据库添/删/改/查

在这里插入图片描述

切记使用SqlHelper所有方法除了Connent方法外 其他方法一定要先Open(),使用完后在Close() 掉

创建表的方法

也可以使用CreateTable方法 创建表 字段名 对应类型全部是string

  //创建数据库类                  IP地址        端口    用户名   密码    数据库项目名称
  var mySqlTools = new SqlHelper("127.0.0.1", "3306", "root", "123456", "user");
  //打开数据库
  mySqlTools.Open();
  //创建表方法              表名             字段名称                             字段类型
  mySqlTools.CreateTable("userdata", new[] { "UID", "User","Password" }, new[] { "tinytext", "tinytext", "tinytext" });
  //关闭数据库
  mySqlTools.Close();

插入数据库方法

  //创建数据库类                  IP地址        端口    用户名   密码    数据库项目名称
  var mySqlTools = new SqlHelper("127.0.0.1", "3306", "root", "123456", "user");
  //打开数据库
  mySqlTools.Open();
  //插入方法               表名                    字段名                             插入数据
  mySqlTools.InsertInto("userdata", new[] { "UID", "User", "Password" },new[] {"水神","ddxj1","123456" });
  //关闭数据库
  mySqlTools.Close();

运行后如下图
在这里插入图片描述

更改数据方法

需求:更改User 为ddxj1 密码为456789

 //创建数据库类                   IP地址       端口    用户名   密码     数据库项目名称
 var mySqlTools = new SqlHelper("127.0.0.1", "3306", "root", "123456", "user");
 //打开数据库
 mySqlTools.Open();
 //  更新方法                      表名         更新字段名    判断符号         更新数据          查询条件字段        条件成立字段
mySqlTools.UpdateIntoSpecific("userdata", new[] { "User" }, new[] { "=" }, new[] { "ddxj1" }, new[] { "Password" }, new[] { "456789" });
 //关闭数据库
 mySqlTools.Close();

运行结果于下图
在这里插入图片描述

删除数据方法

需求删除表中 User为ddxj1数据

 //创建数据库类                    IP地址       端口    用户名   密码   数据库项目名称
 var mySqlTools = new SqlHelper("127.0.0.1", "3306", "root", "123456", "user");
 //打开数据库
 mySqlTools.Open();
 //  删除方法         表名          删除字段        判断条件     条件成立数据         
 mySqlTools.Delete("userdata", new[] { "User" }, new[] { "=" }, new[] { "ddxj1" });
 //关闭数据库
 mySqlTools.Close();

代码运行结果如下
在这里插入图片描述

数据库查询方法

需求:查询表中User 为imdork 对应UID 对应数据
在这里插入图片描述
SelectWhere方法会返回Dataset类对象
MysqlTools 类的GetValue方法负责接收DataSet对象 传递字段名称返回对应数据
代码如下:

 //创建数据库类                   IP地址       端口    用户名   密码    数据库项目名称
 var mySqlTools = new SqlHelper("127.0.0.1", "3306", "root", "123456", "user");
 //打开数据库
 mySqlTools.Open();
 //查询方法                          表名        查询字段名        判断字段名       判断符号        条件成立数据
 var ds = mySqlTools.SelectWhere("userdata", new[] { "UID" }, new[] { "User" }, new[] { "=" }, new[] { "imdork" });

 //SelectWhere方法会返回Dataset类对象, 声明ds变量接收如上图
 //                                 方法第一个参数   方法第二个参数
 //调用MysqlTools 工具类             Dataset类对象  查询字段
 object values = MysqlTools.GetValue(ds, "UID");
 print(values); //最后打印15924
 //关闭数据库
 mySqlTools.Close();

最后控制台打印:
在这里插入图片描述

根据条件查询 当前行所有字段数据方法

  //查询方法                         表名         判断字段名       判断符号        条件成立数据
  var ds = mySqlTools.SelectWhere("userdata", new[] { "User" }, new[] { "=" }, new[] { "ddxj1" });

 //SelectWhere方法会返回Dataset类对象, 声明ds变量接收如上图
 //MysqlTools 工具类使用GetValue方法负责接收DataSet对象 给字段名称返回对应数据
 //调用MysqlTools 工具类                 Dataset类对象  查询字段
 object values = MysqlTools.GetValue(ds, "UID");
 print(values); //最后打印15924

问题解决方案

注:如果跟着楼上步骤没有任何问题,下面就不用跟着做了。

如果Mysql安装时出现问题

因为你安装了其他Mysql版本没有删除干净。
解决问题办法:
如果在控制台输入以下指令出现问题

 mysqld --install

如果显示The service already exists!
在这里插入图片描述

解决办法 先以管理员打开控制台 输入

sc query mysql

在这里插入图片描述

如上图 如果发现有则输入

sc delete mysql

在这里插入图片描述
如上图表示删除成功

然后在控制台输入指令

sc query mysql

在这里插入图片描述

Mysql已经删除成功


版权声明:本文为qq_43333567原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。