C#实现MySQL的SELECT查询
在C#中操作MySQL数据库需要以下步骤:
1. 安装驱动
通过NuGet安装MySql.Data包:
Install-Package MySql.Data -Version 8.0.33
2. 基础代码实现
using MySql.Data.MySqlClient;
using System;
class Program
{
static void Main()
{
// 数据库连接配置(替换实际参数)
string server = "localhost";
string database = "your_db";
string uid = "root";
string password = "your_password";
string connStr = $"Server={server};Database={database};Uid={uid};Pwd={password};";
using (MySqlConnection conn = new MySqlConnection(connStr))
{
try
{
conn.Open();
string sql = "SELECT id, name, email FROM users";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
using (MySqlDataReader reader = cmd.ExecuteReader())
{
Console.WriteLine("查询结果:");
Console.WriteLine("ID\tName\tEmail");
Console.WriteLine("----------------------------");
while (reader.Read())
{
int id = reader.GetInt32("id");
string name = reader.GetString("name");
string email = reader.GetString("email");
Console.WriteLine($"{id}\t{name}\t{email}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"错误: {ex.Message}");
}
}
}
}
3. 关键组件说明
| 组件 | 作用 |
|---|---|
MySqlConnection | 建立数据库连接 |
MySqlCommand | 执行SQL命令 |
MySqlDataReader | 逐行读取查询结果 |
ExecuteReader() | 执行SELECT返回数据流 |
reader.Read() | 移动到下一行记录 |
reader.GetXXX() | 按列名/索引获取具体值 |
4. 参数化查询(防SQL注入)
string sql = "SELECT * FROM products WHERE price > @minPrice AND category = @cat";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@minPrice", 100.0);
cmd.Parameters.AddWithValue("@cat", "Electronics");
// ...执行查询...
}
5. 异常处理建议
- 使用
try-catch-finally确保连接关闭 - 捕获特定异常类型:
catch (MySqlException mysqlex) { Console.WriteLine($"数据库错误: {mysqlex.Number} - {mysqlex.Message}"); }
注意:实际使用时需替换连接字符串参数,建议将敏感信息存储在配置文件中。对于大型数据集,可考虑使用
DataSet或异步方法ExecuteReaderAsync()提高性能。
817

被折叠的 条评论
为什么被折叠?



