c# MySQLHelper
时间: 2025-01-06 13:38:52 浏览: 7
### 如何在 C# 中使用 MySQLHelper 进行数据库操作
#### 创建 `MysqlHelper` 类
为了简化与 MySQL 数据库的交互,在 C# 应用程序中可以定义一个名为 `MysqlHelper` 的静态辅助类。此类通常会包含执行 SQL 查询、存储过程调用以及参数化查询等功能的方法。
```csharp
public static class MysqlHelper
{
private static string connectionString = "Server=localhost;Database=testdb;Uid=root;Pwd=yourpassword;";
public static int ExecuteNonQuery(string sql, MySqlParameter[] parameters)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
if(parameters != null && parameters.Length > 0){
cmd.Parameters.AddRange(parameters);
}
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string sql, MySqlParameter[] parameters)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
if(parameters != null && parameters.Length > 0){
cmd.Parameters.AddRange(parameters);
}
conn.Open();
return cmd.ExecuteScalar();
}
}
}
public static DataTable GetDataTable(string sql, MySqlParameter[] parameters)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
using (MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn))
{
if(parameters != null && parameters.Length > 0){
adapter.SelectCommand.Parameters.AddRange(parameters);
}
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds.Tables[0];
}
}
}
}
```
上述代码展示了如何构建一个简单的 `MysqlHelper` 辅助类,该类提供了三种主要功能:执行非查询命令(如 INSERT/UPDATE/DELETE)、获取单个值的结果集(如 COUNT(*) 或 SUM()),以及填充整个表格的数据[^1]。
#### 使用 `MysqlHelper` 执行 CRUD 操作
##### 插入记录
当需要向表内添加新纪录时,可以通过调用 `ExecuteNonQuery()` 方法并传入合适的 SQL 命令字符串和必要的输入参数来完成此任务:
```csharp
string insertQuery = @"INSERT INTO users(name,email,password) VALUES(@name,@email,@pwd)";
var paramaters = new MySqlParameter[]{
new MySqlParameter("@name", "John Doe"),
new MySqlParameter("@email","john@example.com"),
new MySqlParameter("@pwd","secure_password")
};
int affectedRows = MysqlHelper.ExecuteNonQuery(insertQuery,paramaters);
Console.WriteLine($"Inserted {affectedRows} row(s).");
```
##### 更新现有记录
更新特定条件下的某些字段同样依赖于 `ExecuteNonQuery()` 函数;只需更改所提供的 SQL 文本即可满足需求:
```csharp
string updateQuery = @"UPDATE users SET email=@newEmail WHERE id=@userId";
var parameters = new MySqlParameter[]{
new MySqlParameter("@newEmail","johndoe_newmail@domain.net"),
new MySqlParameter("@userId",12345L)
};
int updatedCount = MysqlHelper.ExecuteNonQuery(updateQuery,parameters);
Console.WriteLine($"{updatedCount} record(s) were successfully modified.");
```
##### 删除指定条目
删除操作也遵循相同的模式——通过传递 DELETE 语句给 `ExecuteNonQuery()` 来移除符合条件的数据项:
```csharp
string deleteStatement = @"DELETE FROM orders WHERE order_date < @dateLimit AND status='cancelled'";
DateTime cutoffDate = DateTime.Now.AddYears(-1); // One year ago from now.
var paramsArray = new MySqlParameter[]{new MySqlParameter("@dateLimit",cutoffDate)};
long deletedEntries = Convert.ToInt64(MysqlHelper.ExecuteScalar(deleteStatement,paramsArray));
Console.WriteLine("{0:N0} cancelled orders older than one year have been removed.",deletedEntries);
```
##### 获取数据列表
对于读取多行或多列的信息,则应利用 `GetDataTable()` 方便地加载完整的数据集合到内存中的 `DataTable` 对象里供后续处理:
```csharp
string selectAllUsers = "SELECT * FROM users ORDER BY created_at DESC LIMIT 10";
DataTable userTable = MysqlHelper.GetDataTable(selectAllUsers,null);
foreach(DataRow row in userTable.Rows){
Console.WriteLine("User ID:{0}, Name={1}",row["id"],row["name"]);
}
```
以上就是基于 `MysqlHelper` 实现基本增删改查功能的具体方式。
阅读全文