Unity链接MySql数据库
作者:mmseoamin日期:2023-12-25

一、连接准备

1. MySql.Data插件

  • Visual Studio中下载
  • 打开Visual Studio_项目_管理NuGet程序包在这里插入图片描述
  • 在浏览中搜索MySql.Data并下载在这里插入图片描述

    2.MySql官网下载插件

    • 前提已经安装mysql,然后到官网下载以下三个东西(最好不要使用最新版本)
      • MySQL Connector Net
      • Connector ODBC 8.0
      • MySQL for VIsaul Studio在这里插入图片描述在这里插入图片描述
      • 下载完直接双击(傻瓜式)安装即可

        3.连接测试(可选)

        • 打开Visual Studio_视图_服务器资源管理器在这里插入图片描述

        • 在弹出的窗口,右键数据连接,选择添加连接在这里插入图片描述

        • 选择MySQL Database,点击继续在这里插入图片描述

        • 输入数据库地址、账号、密码、数据库名,然后点击测试连接在这里插入图片描述

        • 弹出对话框“测试连接成功”,则可进入下一步在这里插入图片描述

          二、Unity链接MySql

          1.在Unity中导入dll文件

          • dll如下(共五个)
            • 如果不打包exe文件,仅需导入最后一个dll文件即可

              在这里插入图片描述

              在路径:C:\Program Files (x86)\MySQL\MySQL Connector Net6.8.7\Assemblies\v2.0中找到MySql.Data.dll导入Unity中Plugins文件夹下

              在这里插入图片描述

              对应Unity的安装目录:Unity\Editor\Data\MonoBleedingEdge\lib\mono\unityjit;找到其余dll文件

              在这里插入图片描述

              2. 创建数据库,内容如下:在这里插入图片描述

              3. 编写查询脚本进行测试

              public void InquireMysql()
                  {
                      //数据库地址、用户名、密码、数据库名
                      string sqlSer = "server = localhost;port = 3306;database = test;user = root;password = 123456";
                      //建立连接
                      MySqlConnection conn = new MySqlConnection(sqlSer);
                      try
                      {
                          conn.Open();
                          Debug.Log("------链接成功------");
                          //sql语句
                          string sqlQuary = " select * from mytable";
                          MySqlCommand comd = new MySqlCommand(sqlQuary, conn);
                          MySqlDataReader reader = comd.ExecuteReader();
                          while (reader.Read())
                          {
                              //通过reader获得数据库信息
                              Debug.Log(reader.GetString("user_name"));
                              Debug.Log(reader.GetString("user_password"));
                          }
                      }
                      catch (System.Exception e)
                      {
                          Debug.Log(e.Message);
                      }
                      finally
                      {
                          conn.Close();
                      }
                  }
              

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

              4. 编写插入脚本进行测试

              • 修改,删除处理在此脚本基础上修改SQL语句即可
                public void ChangedMysql()
                    {
                        //数据库地址、用户名、密码、数据库名
                        string sqlSer = "server = localhost;port = 3306;database = test;user = root;password = 123456";
                        MySqlConnection conn = new MySqlConnection(sqlSer);
                        try
                        {
                            conn.Open();
                            Debug.Log("------链接成功------");
                            string sqlQuary = "insert into mytable(user_name,user_password) values (@user_name, @user_password)";
                            MySqlCommand comd = new MySqlCommand(sqlQuary, conn);
                            comd.Parameters.AddWithValue("@user_name", "用户名");
                            comd.Parameters.AddWithValue("@user_password", "密码");
                            comd.ExecuteNonQuery();
                        }
                        catch (System.Exception e)
                        {
                            Debug.Log(e.Message);
                        }
                        finally
                        {
                            conn.Close();
                        }
                    }
                

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

                三、问题处理

                1.打包后无法连接数据库

                • 首先确认所需的五个dll文件是否已经全部导入
                • 在Unity中去修改Api Compatibility Level为.NET 4.x

                  路径:Project Setting->player->othersetting->Configuration->Api Compatibility Level

                  在这里插入图片描述

                  • 如果Unity版本是2018及以前的,还需要导入System.Data.dll和System.Drawing.dll两个文件;

                    2.遇到其他问题欢迎读者提出