Unity连接Mysql数据库流程

最近做毕设需要用到Mysql数据库来配合Unity完成一些数据库上的操作,也遇到不少坑,特此来总结一下。

一.系统环境

  • Win10操作系统
  • Unity版本:Unity 2019.2.14f1
  • Mysql版本:mysql-5.7.28-winx64
  • Mysql Workbench 8.0 CE
  • Visual Studio 2019

对于Mysql文件可以到Mysql官网中自行下载
我这里提供用到的文件网盘链接
提取码:l344

二.配置Mysql

  • 将下载到的Mysql放在英文路径下
  • 鼠标右键左下角的开始按钮,点击进入命令行(要以管理员身份启动)
    Unity连接Mysql数据库流程_第1张图片
  • 下转到mysql目录下的bin目录
  • 接着安装Mysql服务:mysqld --install (我这里因为之前装过了,正常应该显示Service successfully installed)
  • 初始化mysql,很关键 ,这里会产生一个随机密码 mysqld --initalize --console(这里找了网上的图片用来演示)
    Unity连接Mysql数据库流程_第2张图片
    如果不小心关了窗口 这个初始化密码可以在mysql目录下一个.ini后缀的文件里面自行找到
  • 开启mysql服务 net start Mysql
    Unity连接Mysql数据库流程_第3张图片
  • 登录验证 mysql -u root -p
    Unity连接Mysql数据库流程_第4张图片
  • 修改密码
    初始化密码很复杂,我们肯定要修改的
    Unity连接Mysql数据库流程_第5张图片
    最后找到系统的环境变量设置(右键此电脑->点击属性->点击高级系统设置->环境变量)添加Mysql目录的bin目录即可
    Unity连接Mysql数据库流程_第6张图片
    Unity连接Mysql数据库流程_第7张图片

三.导入Mysql配置文件至Unity

要使Unity可以使用Mysql必须导入MySql.Data.dll文件(该文件来源于Mysql官网中mysql-connector-net-5.2.7),该文件也在网盘链接中,将该文件放置与游戏Assets/Plugin文件夹中

网上一些资料说还需要添加System.data.dll和System.drawing.dll文件,我添加后VS2019会提示有冲突重复了,所以就没有添加进来

四.Unity中C#代码调用Mysql

这里我推荐看一下Unity3D开发使用Mysql数据库别人的博客

首先定义数据库连接字符串 用于记录数据库连接所需要的信息

public static string connStr = "Database=game;Data Source=127.0.0.1;User Id=root;Password=123;port=3306";
  • Database就是在Mysql Workbench如图所示表示的game
    Unity连接Mysql数据库流程_第8张图片
  • Data Source 为登录时候的ip地址,我这里用的是本地默认的127.0.0.1
  • UserId和Password就是数据库用户名和密码
  • port是端口号,Mysql默认是3306

下面是常用的操作

  • 建立连接
public static MySqlConnection conn;
public static void OpenConnection()
{
    try
    {
        conn = new MySqlConnection(connStr);
        conn.Open();
        Debug.Log("成功打开连接");
    }
    catch (Exception e)
    {
        Debug.Log(e.Message);
    }
}
  • 关闭连接
public static void CloseConnection()
{
    if (conn != null)
    {
        conn.Close();
        conn.Dispose();
        conn = null;
        Debug.Log("成功关闭连接");
    }
    else
        Debug.Log("无连接");
}

先附上我建的数据库表
Unity连接Mysql数据库流程_第9张图片

  • 数据查询
    MySqlCommand command = new MySqlCommand("select * from user where username=@username " +
                                            "and password=@password", conn);
    command.Parameters.AddWithValue("username", username);
    command.Parameters.AddWithValue("password", password);
    
    MySqlDataReader reader = command.ExecuteReader();
    
    if (reader.Read())
    {
        int id = reader.GetInt32("id");  // 获取该行数据中列名为id对应的数据
    }
  • 数据删除
    MySqlCommand cmd = new MySqlCommand("delete from user where id = @id", conn);
    cmd.Parameters.AddWithValue("id", 1);
    cmd.ExecuteNonQuery();
  • 数据更新
    MySqlCommand cmd = new MySqlCommand("update user set username = @username where id = 1", conn);
    cmd.Parameters.AddWithValue("username", "xin");
    cmd.ExecuteNonQuery();
  • 数据插入
    // 两种插入方式 更习惯与第二种
    MySqlCommand cmd = new MySqlCommand("insert into user set username ='" + username + "'" + ",password='" + password + "'", conn);
    MySqlCommand cmd = new MySqlCommand("insert into user set username=@un , password = @pwd", conn);
 
    cmd.Parameters.AddWithValue("un", username);
    cmd.Parameters.AddWithValue("pwd", password);
 
    cmd.ExecuteNonQuery();

基本的数据库操作就这些了…当然Mysql还是有很多语法,大家可以自行查询

如我这里实现了一个查询排行榜前5名的

        MySqlCommand mySqlCommand = new MySqlCommand("select username,score from user order by score desc limit 5", DataBaseConnection.conn);
        MySqlDataReader reader = mySqlCommand.ExecuteReader();

        int index = 0;
        while(reader.Read())
        {
            leaderboardRankName[index].text = reader["username"].ToString();
            leaderboardRankScore[index].text = reader["score"].ToString();
            ++index;
        }

总结

目前使用下来差不多就这些了,有问题可以评论交流

你可能感兴趣的:(Unity3d学习)