轻松掌握C#操作MySQL:实用工具类教程

在这里插入图片描述

我们将一起学习如何使用C#操作MySQL数据库。在现代软件开发中,数据库是不可或缺的组成部分,而能够有效地与数据库沟通无疑是每个开发者都应该具备的技能。为了让这个过程变得简单而高效,我们将创建一个名为MySQLDatabaseHelper的工具类,让它成为我们的数据库操作小帮手。

在此之前,请确保你的开发环境中已经安装了MySql.Data包,这是官方的MySQL .NET Connector。你可以使用NuGet包管理器来安装它。下面,让我们开始我们的探索之旅吧!

MySQLDatabaseHelper类

using System;
using System.Data;
using System.Collections.Generic;
using MySql.Data.MySqlClient;
using System.Threading.Tasks;

public class MySQLDatabaseHelper
{
    // 我们的数据库连接字符串,它将告诉我们如何连接到数据库服务器
    private readonly string _connectionString;

    // 类构造函数,需要一个连接字符串参数
    public MySQLDatabaseHelper(string connectionString)
    {
        // 如果没有提供连接字符串,那将抛出一个异常
        _connectionString = connectionString ?? throw new ArgumentNullException(nameof(connectionString), "数据库连接字符串不能为空!");
    }

    // 异步查询函数,返回一个DataTable
    // sql: SQL查询字符串
    // parameters (可选): SQL参数字典,用于参数化查询,增强安全性
    public async Task<DataTable> ExecuteQueryAsync(string sql, IDictionary<string, object> parameters = null)
    {
        // 创建一个新的数据库连接实例
        using var conn = new MySqlConnection(_connectionString);
        // 打开数据库连接
        await conn.OpenAsync();

        // 创建一个新的数据库命令实例
        using var cmd = new MySqlCommand(sql, conn);

        // 如果存在参数,将它们添加到命令中
        if (parameters != null)
        {
            foreach (var param in parameters)
            {
                cmd.Parameters.AddWithValue(param.Key, param.Value ?? DBNull.Value);
            }
        }

        // 创建一个新的数据表实例,它将包含查询结果
        var dataTable = new DataTable();
        // 使用适配器填充数据表
        using var adapter = new MySqlDataAdapter(cmd);
        adapter.Fill(dataTable);

        // 返回填充好的数据表
        return dataTable;
    }

    // 异步执行非查询SQL命令
    // 返回影响的行数,例如在INSERT、UPDATE或DELETE操作中
    public async Task<int> ExecuteNonQueryAsync(string sql, IDictionary<string, object> parameters = null)
    {
        // 同上,创建数据库连接和命令
        using var conn = new MySqlConnection(_connectionString);
        await conn.OpenAsync();

        using var cmd = new MySqlCommand(sql, conn);

        // 添加参数到命令
        if (parameters != null)
        {
            foreach (var param in parameters)
            {
                cmd.Parameters.AddWithValue(param.Key, param.Value ?? DBNull.Value);
            }
        }

        // 执行命令并返回影响的行数
        return await cmd.ExecuteNonQueryAsync();
    }
}

详细注释

  • 连接字符串:这是连接到MySQL数据库的关键信息,包含了服务器地址、用户名、密码、数据库名等。
  • 构造函数:确保在创建MySQLDatabaseHelper实例时,我们有一个有效的连接字符串。
  • ExecuteQueryAsync:一个异步方法,执行SQL查询并以DataTable的形式返回结果,方便在C#中操作。
  • ExecuteNonQueryAsync:这个异步方法执行非查询类型的SQL命令,如更改或删除数据,并返回受影响的行数,让我们知道操作的结果。

使用MySQLDatabaseHelper

一旦我们有了这个工具类,使用它来与数据库交云增删改查就变得非常简单:

// 创建一个MySQLDatabaseHelper实例
var dbHelper = new MySQLDatabaseHelper("你的MySQL连接字符串");

// 用它来异步执行一个查询
var usersTable = await dbHelper.ExecuteQueryAsync("SELECT * FROM users WHERE age > @age", new Dictionary<string, object> { { "@age", 18 } });

// 或者用它来异步执行一个插入命令
int affectedRows = await dbHelper.ExecuteNonQueryAsync("INSERT INTO users (name, age) VALUES (@name, @age)", new Dictionary<string, object> { { "@name", "John Doe" }, { "@age", 25 } });

实际使用时,连接字符串记得写到配置文件里。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 C# MySQL 工具类的实现,包含了连接、查询和关闭数据库等基本操作: ```csharp using System; using System.Data; using MySql.Data.MySqlClient; namespace MySqlUtils { public class MySqlHelper { private readonly string connectionString; // 数据库连接字符串 public MySqlHelper(string connectionString) { this.connectionString = connectionString; } // 执行查询,返回 DataTable public DataTable ExecuteQuery(string sql) { using (var connection = new MySqlConnection(connectionString)) { connection.Open(); var command = new MySqlCommand(sql, connection); var adapter = new MySqlDataAdapter(command); var dataTable = new DataTable(); adapter.Fill(dataTable); return dataTable; } } // 执行非查询操作,返回受影响的行数 public int ExecuteNonQuery(string sql) { using (var connection = new MySqlConnection(connectionString)) { connection.Open(); var command = new MySqlCommand(sql, connection); return command.ExecuteNonQuery(); } } // 关闭数据库连接 public void Close() { MySqlConnection.ClearAllPools(); // 清空连接池 } } } ``` 使用示例: ```csharp using System; using System.Data; using MySqlUtils; namespace Test { class Program { static void Main(string[] args) { var connectionString = "server=localhost;uid=root;pwd=root;database=test;"; var helper = new MySqlHelper(connectionString); // 查询 var dataTable = helper.ExecuteQuery("SELECT * FROM users"); foreach (DataRow row in dataTable.Rows) { Console.WriteLine(row["id"] + " " + row["name"]); } // 非查询操作 var affectedRows = helper.ExecuteNonQuery("INSERT INTO users(name) VALUES('Test')"); Console.WriteLine("Affected Rows: " + affectedRows); helper.Close(); } } } ``` 注意:该示例中的连接字符串需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值