最近做毕设需要用到Mysql数据库来配合Unity完成一些数据库上的操作,也遇到不少坑,特此来总结一下。
对于Mysql文件可以到Mysql官网中自行下载
我这里提供用到的文件网盘链接
提取码:l344
要使Unity可以使用Mysql必须导入MySql.Data.dll文件(该文件来源于Mysql官网中mysql-connector-net-5.2.7),该文件也在网盘链接中,将该文件放置与游戏Assets/Plugin文件夹中
网上一些资料说还需要添加System.data.dll和System.drawing.dll文件,我添加后VS2019会提示有冲突重复了,所以就没有添加进来
这里我推荐看一下Unity3D开发使用Mysql数据库别人的博客
首先定义数据库连接字符串 用于记录数据库连接所需要的信息
public static string connStr = "Database=game;Data Source=127.0.0.1;User Id=root;Password=123;port=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;
}
目前使用下来差不多就这些了,有问题可以评论交流