返回

在Unity中实现数据库增删改查功能

前端

Unity实用功能之Unity连接MySql数据库(二)

前言

在上一篇文章中,我们成功地建立了Unity与MySQL数据库之间的连接,为游戏开发奠定了坚实的基础。本篇教程将进一步拓展我们的知识,介绍如何在Unity中使用C#代码实现数据库的增删改查操作,全面提升你的游戏开发能力。

增(Insert)

在数据库中添加新数据记录的过程称为插入。在Unity中,我们可以通过以下步骤进行插入操作:

  1. 准备SQL语句: 编写一个INSERT INTO语句,指定要插入数据的表名、列名和值。
  2. 创建Command对象: 使用MySqlCommand类创建Command对象,并设置其CommandText属性为准备好的SQL语句。
  3. 打开数据库连接: 使用MySqlConnection类的Open()方法打开数据库连接。
  4. 执行插入操作: 使用Command对象的ExecuteNonQuery()方法执行插入操作。
  5. 关闭数据库连接: 使用MySqlConnection类的Close()方法关闭数据库连接。

删(Delete)

从数据库中删除现有数据记录的过程称为删除。在Unity中,我们可以通过以下步骤进行删除操作:

  1. 准备SQL语句: 编写一个DELETE FROM语句,指定要删除数据的表名和条件。
  2. 创建Command对象: 与插入操作类似,创建Command对象并设置CommandText属性为准备好的SQL语句。
  3. 打开数据库连接: 打开数据库连接。
  4. 执行删除操作: 使用Command对象的ExecuteNonQuery()方法执行删除操作。
  5. 关闭数据库连接: 关闭数据库连接。

改(Update)

修改数据库中现有数据记录的过程称为更新。在Unity中,我们可以通过以下步骤进行更新操作:

  1. 准备SQL语句: 编写一个UPDATE语句,指定要更新的表名、列名和值,以及更新条件。
  2. 创建Command对象: 创建Command对象并设置CommandText属性为准备好的SQL语句。
  3. 打开数据库连接: 打开数据库连接。
  4. 执行更新操作: 使用Command对象的ExecuteNonQuery()方法执行更新操作。
  5. 关闭数据库连接: 关闭数据库连接。

查(Select)

从数据库中检索数据记录的过程称为查询。在Unity中,我们可以通过以下步骤进行查询操作:

  1. 准备SQL语句: 编写一个SELECT语句,指定要查询的列名、表名和查询条件。
  2. 创建Command对象: 创建Command对象并设置CommandText属性为准备好的SQL语句。
  3. 打开数据库连接: 打开数据库连接。
  4. 执行查询操作: 使用Command对象的ExecuteReader()方法执行查询操作,返回一个包含查询结果的SqlDataReader对象。
  5. 读取查询结果: 使用SqlDataReader对象的Read()方法逐行读取查询结果。
  6. 关闭SqlDataReader对象: 读取完所有查询结果后,关闭SqlDataReader对象。
  7. 关闭数据库连接: 关闭数据库连接。

实例代码

以下示例代码展示了如何在Unity中实现数据库增删改查功能:

using MySql.Data.MySqlClient;
using UnityEngine;

public class DatabaseManager : MonoBehaviour
{
    private MySqlConnection _connection;

    private void Awake()
    {
        // 建立数据库连接
        _connection = new MySqlConnection("connectionString");
        _connection.Open();
    }

    private void OnDestroy()
    {
        // 关闭数据库连接
        _connection.Close();
    }

    public void InsertData(int id, string name, int score)
    {
        // 准备SQL语句
        string sql = "INSERT INTO students (id, name, score) VALUES (@id, @name, @score)";

        // 创建Command对象
        using (MySqlCommand command = new MySqlCommand(sql, _connection))
        {
            // 设置参数
            command.Parameters.AddWithValue("@id", id);
            command.Parameters.AddWithValue("@name", name);
            command.Parameters.AddWithValue("@score", score);

            // 执行插入操作
            command.ExecuteNonQuery();
        }
    }

    public void DeleteData(int id)
    {
        // 准备SQL语句
        string sql = "DELETE FROM students WHERE id = @id";

        // 创建Command对象
        using (MySqlCommand command = new MySqlCommand(sql, _connection))
        {
            // 设置参数
            command.Parameters.AddWithValue("@id", id);

            // 执行删除操作
            command.ExecuteNonQuery();
        }
    }

    public void UpdateData(int id, string name, int score)
    {
        // 准备SQL语句
        string sql = "UPDATE students SET name = @name, score = @score WHERE id = @id";

        // 创建Command对象
        using (MySqlCommand command = new MySqlCommand(sql, _connection))
        {
            // 设置参数
            command.Parameters.AddWithValue("@id", id);
            command.Parameters.AddWithValue("@name", name);
            command.Parameters.AddWithValue("@score", score);

            // 执行更新操作
            command.ExecuteNonQuery();
        }
    }

    public List<Student> QueryData()
    {
        // 准备SQL语句
        string sql = "SELECT * FROM students";

        // 创建Command对象
        using (MySqlCommand command = new MySqlCommand(sql, _connection))
        {
            // 执行查询操作
            using (MySqlDataReader reader = command.ExecuteReader())
            {
                // 创建一个Student列表来存储查询结果
                List<Student> students = new List<Student>();

                // 逐行读取查询结果
                while (reader.Read())
                {
                    // 创建一个Student对象来存储当前行的值
                    Student student = new Student
                    {
                        Id = reader.GetInt32("id"),
                        Name = reader.GetString("name"),
                        Score = reader.GetInt32("score")
                    };

                    // 将Student对象添加到列表中
                    students.Add(student);
                }

                // 返回查询结果
                return students;
            }
        }
    }
}

结语

通过本篇教程,你已经掌握了在Unity中使用C#代码实现数据库增删改查功能的技巧。通过灵活运用这些功能,你可以在Unity游戏中轻松管理和操作数据库中的数据,为你的游戏增添更多的互动性和趣味性。