找回密码
 立即注册
查看: 217|回复: 0

unity与MySQL链接的方法与相关MySQL语句的实现

[复制链接]
发表于 2022-6-19 12:12 | 显示全部楼层 |阅读模式
(一):链接前的准备

       进入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");
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 08:29 , Processed in 0.117441 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表