最近做毕设需要用到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;
}
总结
目前使用下来差不多就这些了,有问题可以评论交流