stonstad 发表于 2022-6-19 12:12

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]
查看完整版本: unity与MySQL链接的方法与相关MySQL语句的实现