返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 2159|回复: 0

[转载] 【转载】unity与MySQL链接的方法与相关MySQL语句的实现

[复制链接]
发表于 2023-4-19 17:25:50 | 显示全部楼层 |阅读模式
本帖最后由 da11 于 2023-4-19 20:38 编辑

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






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表