最近做畢設需要用到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;
}
總結
目前使用下來差不多就這些了,有問題可以評論交流