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放在英文路徑下
  • 鼠標右鍵左下角的開始按鈕,點擊進入命令行(要以管理員身份啓動)
  • 下轉到mysql目錄下的bin目錄
  • 接着安裝Mysql服務:mysqld --install (我這裏因爲之前裝過了,正常應該顯示Service successfully installed)
  • 初始化mysql,很關鍵 ,這裏會產生一個隨機密碼 mysqld --initalize --console(這裏找了網上的圖片用來演示)

    如果不小心關了窗口 這個初始化密碼可以在mysql目錄下一個.ini後綴的文件裏面自行找到
  • 開啓mysql服務 net start Mysql
  • 登錄驗證 mysql -u root -p
  • 修改密碼
    初始化密碼很複雜,我們肯定要修改的

    最後找到系統的環境變量設置(右鍵此電腦->點擊屬性->點擊高級系統設置->環境變量)添加Mysql目錄的bin目錄即可
    在這裏插入圖片描述

三.導入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
  • 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("無連接");
}

先附上我建的數據庫表

  • 數據查詢
    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;
        }

總結

目前使用下來差不多就這些了,有問題可以評論交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章