unity与MySQL链接的方法与相关MySQL语句的实现
(一):链接前的准备进入mysql官网,根据自己的需求下载对应版本的MySQL。由于链接需要MySql.Data.dll这个动态链接库,但是在与unity链接的时候这个动态链接库的版本不应太高,所以这里使用的是6.10.9这个版本。下载mysql的时候也可将workbench一块下载下来。
(二):具体实现
1、MySQL与MySql.Data,dll准备好后,进入unity,创建一个Plugins的文件夹,将刚下好的dll放入这个文件夹内,如果unity编辑完成且没有报错的话,那么就可以进行使用了。要是有报错,多半原因是动态链接库的版本太高导致的,可以尝试下载更低一点的版本试一下。
2、在unity中新打开一个脚本下面来写与数据库进行操作的相关方法
① 与MySQL建立链接的方法
此方法返回一个MySqlConnection,我们需要去接收这个方法的返回值,在之后的增删改查中需要用到这个返回值,这个返回值相当于建立了一个与MySQL进行连接的通道。 private MySqlConnection ConnectSql(string server,int port,string database, string user ,string password)
{
string sqlSer = "server = " + server + ";" +
"port =" + port + ";" +
"database =" + database + ";" +
"user =" + user + ";" +
"password =" + password;
MySqlConnection conn = new MySqlConnection(sqlSer);
try
{
conn.Open();
Debug.Log("________________链接成功_________________");
return conn;
}
catch (System.Exception e)
{
Debug.Log(e.Message + "\n 链接失败");
return null;
}
finally
{
conn.Close();
}
}
② 向MySQL中插入数据的方法
此方法需要我们传入刚刚建立的链接和需要执行的MySQL插入语句。调用此方法并传入参数,运行后会在unity的控制台输出刚刚的sql语句所影响的行数和sql语句。如果插入不成功,则会在控制台输出异常原因。 private void MysqlInsert(MySqlConnection conn,string sql)
{
try
{
conn.Open();
MySqlCommand comd = new MySqlCommand(sql, conn);
Debug.Log(comd.ExecuteNonQuery() + "\n" + sql);
}
catch (System.Exception e)
{
Debug.Log(e.Message);
}
finally
{
conn.Close();
③ 从MySQL中删除数据的方法
此方法需要传入最开始建立的链接和需要执行的sql语句。执行此方法会在unity的控制台输出sql语句执行后所影响的行数和刚执行的sql语句。如果插入不成功,则会在控制台输出异常原因。 private void MysqlDelete(MySqlConnection conn, string sql)
{
try
{
conn.Open();
MySqlCommand comd = new MySqlCommand(sql, conn);
Debug.Log(comd.ExecuteNonQuery() + "\n" + sql);
}
catch (System.Exception e)
{
Debug.Log(e.Message);
}
finally
{
conn.Close();
}
}
④ 更新MySQL中的数据
与其他方法一样............ private void MysqlUpdate(MySqlConnection conn, string sql)
{
try
{
conn.Open();
MySqlCommand comd = new MySqlCommand(sql, conn);
Debug.Log(comd.ExecuteNonQuery() + "\n" + sql);
}
catch (System.Exception e)
{
Debug.Log(e.Message);
}
finally
{
conn.Close();
}
}
⑤ 在MySQL中查询一条数据
这个方法需要你提前知道要查询什么内容,因为这里我的表结构是这样的
所以我定义了user和password两个变量,执行方法后,该方法会返回你所查询的内容。 private string MysqlSelectOne(MySqlConnection conn, string sql)
{
string user = "";
string password = "";
try
{
conn.Open();
MySqlCommand commd = new MySqlCommand(sql, conn);
MySqlDataReader reader = commd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
user = reader.GetString("User");
password = reader.GetString("Password");
}
}
catch (System.Exception e)
{
return e.Message;
}
finally
{
conn.Close();
}
return "user: " + user + "\n password: " + password;
}
⑥ 在MySQL中查询多条数据
查询多条与查询一条类似。执行此方法同样会返回查询的所有结果。 private void MysqlSelect(MySqlConnection conn, string sql)
{
string user = "";
string password = "";
try
{
conn.Open();
MySqlCommand commd = new MySqlCommand(sql, conn);
MySqlDataReader reader = commd.ExecuteReader();
while (reader.Read())
{
user = reader.GetString("User");
password = reader.GetString("Password");
Debug.Log("user: " + user + "\n password: " + password);
}
}
catch (System.Exception e)
{
Debug.Log(e.Message);
}
finally
{
conn.Close();
}
}
3、最后在合适的地方调用相关方法就行了
if (Input.GetMouseButtonDown(0))
{
MySqlConnection conn = ConnectSql("localhost", 3306, "database_1", "root", "11111");
MysqlInsert(conn, "insert into mytable_1(id,User,Password) Value('7','sun_7','44')");
MysqlDelete(conn, "delete from mytable_1 where id = 2");
//MysqlUpdate(conn, "update mytable_1 set User = 'Sunfh' where id = 5");
//Debug.Log(MysqlSelectOne(conn, "select * from mytable_1 where id = 2"));
//MysqlSelect(conn, "select * from mytable_1");
}
页:
[1]