前言
使用MySQL制作一个简易的用户信息管理系统,包括用户登录,新用户注册,修改用户密码,删除用户信息等。主要功能涉及到在Unity中对MySQL数据库的增删改查,数据库的连接之前的文章里有介绍到,这里就不多做赘述。
Unity连接数据库
用户登录功能
自定义对象赋值
[Header("登录账号")]
public string _name;
[Header("登录密码")]
public string _pwd;
public Dictionary<string, string> userData = new Dictionary<string, string>();
MySqlConnection connection;
private string connectionString;//SQL连接信息
private void Awake()
{
connectionString = "server=localhost;user id=root;password=登录密码;database=user;charset=utf8;";
}
连接方法
private void Start()
{
connection = new MySqlConnection(connectionString);
try
{
connection.Open();
string query = "SELECT * FROM data1";
var command = new MySqlCommand(query, connection);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
//Debug.Log("开始读取内容");
int columID = reader.GetInt32("uID");
string columName = reader.GetString("uName");
string columPwd = reader.GetString("uPwd");
userData.Add(columName, columPwd);
Debug.Log($"读取到内容,ID:{columID};姓名:{columName};密码:{columPwd}");
}
reader.Close();
}
catch (MySqlException ex)
{
Debug.LogError("Failed to connect to the database: " + ex.Message);
}
finally
{
connection.Close();
}
}
用户登录方法
我这只是一个简易的demo,方法就直接写在了Update里
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("读取字典");
if (userData.ContainsKey(_name))
{
Debug.Log("用户存在,账号输入正确");
if (_pwd == userData[_name])
{
Debug.Log("密码:" + userData[_name]);
Debug.Log("密码输入正确");
}
else
{
Debug.Log("密码输入错误");
}
}
else
{
Debug.Log("用户不存在");
}
}
}
新用户注册方法
[Header("新增用户名")]
public string _NewName;
[Header("新增用户密码")]
public string _NewPwd;
void AddSql()
{
try
{
connection.Open();
string query1 = "INSERT INTO data1 (uID, uName, uPwd) VALUES (@userID, @username, @password)";
var command = new MySqlCommand(query1, connection);
byte[] inputNewName = Encoding.UTF8.GetBytes(_NewName);
string newName = Encoding.UTF8.GetString(inputNewName);
long _userID = command.LastInsertedId;
command.Parameters.AddWithValue("@userID", _userID);
command.Parameters.AddWithValue("@username", _NewName);
command.Parameters.AddWithValue("@password", _NewPwd);
command.ExecuteNonQuery();
Debug.Log("成功插入数据");
}
catch (Exception e)
{
Debug.LogError("Failed to connect to the database: " + e.Message);
}
finally
{
connection.Close();
}
}
修改用户信息方法
也可以单独只修改一项
[Header("待修改用户")]
public string oldName;
[Header("用户新信息")]
public string newName;
[Header("用户新密码")]
public string newPwd;
void UpdateSql()
{
try
{
connection.Open();
string query = "UPDATE data1 SET uName = @newUsername, uPwd = @newPassword WHERE uName = @oldUsername";
var command = new MySqlCommand(query, connection);
command.Parameters.AddWithValue("@newUsername", newName);
command.Parameters.AddWithValue("@newPassword", newPwd);
command.Parameters.AddWithValue("@oldUsername", oldName);
command.ExecuteNonQuery();
Debug.Log("成功更新数据");
}
catch (MySqlException ex)
{
Debug.LogError("Failed to connect to the database: " + ex.Message);
}
finally
{
connection.Close();
}
}
删除用户信息
void RemoveSql()
{
connection = new MySqlConnection(connectionString);
try
{
connection.Open();
string query1 = "DELETE FROM data1 WHERE BINARY uName = @username";
var command = new MySqlCommand(query1, connection);
command.Parameters.AddWithValue("@username", _RemoveName);
command.ExecuteNonQuery();
Debug.Log("成功删除数据");
}
catch (Exception e)
{
Debug.LogError("Failed to connect to the database: " + e.Message);
}
finally
{
connection.Close();
}
}
总结
这里都只是一些SQL语法在Unity里的简单应用,实现这些功能的方法肯定不止一种,大家可以多多扩展。