ASP.NET操作MySQL数据库的实例代码讲解
开发环境与依赖安装
硬件与软件准备
- 操作系统:Windows 10/11(推荐64位)
- 开发工具:Visual Studio 2026(或更高版本)
- 数据库:MySQL 8.0+(安装后创建测试数据库
testdb) - 表结构:在
testdb中创建Users表(字段:idINT PRIMARY KEY AUTO_INCREMENT,nameVARCHAR(50),emailVARCHAR(100))
安装.NET依赖
在Visual Studio中,通过NuGet包管理器安装MySql.Data库:
- 右键项目 → 管理NuGet包 → 搜索
MySql.Data→ 安装
建立数据库连接
配置连接字符串
推荐在web.config中配置连接字符串,便于管理:
<configuration>
<connectionStrings>
<add name="MySqlConnection"
connectionString="Server=localhost;Database=testdb;Uid=root;Pwd=yourpassword;"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>注意:providerName是关键标识符,确保代码能识别MySQL连接
代码中获取连接
若不使用配置文件,可通过代码动态获取连接:
string connStr = "Server=localhost;Database=testdb;Uid=root;Pwd=yourpassword;";
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open(); // 打开连接
// 后续操作
}基础CRUD操作实例
以Users表为例,演示增删改查的核心代码。
插入(Insert)新记录
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
string sql = "INSERT INTO Users (name, email) VALUES (@Name, @Email)";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Name", "Alice");
cmd.Parameters.AddWithValue("@Email", "alice@example.com");
cmd.ExecuteNonQuery(); // 执行插入
}
}查询(Select)所有记录
List<User> users = new List<User>();
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
string sql = "SELECT id, name, email FROM Users";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
users.Add(new User
{
Id = reader.GetInt32("id"),
Name = reader.GetString("name"),
Email = reader.GetString("email")
});
}
}
}
}注:User为实体类,需手动映射字段
更新(Update)记录
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
string sql = "UPDATE Users SET name = @Name WHERE id = @Id";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Name", "Bob");
cmd.Parameters.AddWithValue("@Id", 1);
cmd.ExecuteNonQuery();
}
}删除(Delete)记录
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
string sql = "DELETE FROM Users WHERE id = @Id";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Id", 1);
cmd.ExecuteNonQuery();
}
}高级应用与优化
事务处理(多步骤操作)
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
MySqlTransaction trans = conn.BeginTransaction(); // 开始事务
try
{
string sql1 = "INSERT INTO Users (name, email) VALUES (@Name, @Email)";
using (MySqlCommand cmd1 = new MySqlCommand(sql1, conn, trans))
{
cmd1.Parameters.AddWithValue("@Name", "Carol");
cmd1.Parameters.AddWithValue("@Email", "carol@example.com");
cmd1.ExecuteNonQuery();
}
string sql2 = "UPDATE Users SET email = @Email WHERE id = @Id";
using (MySqlCommand cmd2 = new MySqlCommand(sql2, conn, trans))
{
cmd2.Parameters.AddWithValue("@Email", "carol_new@example.com");
cmd2.Parameters.AddWithValue("@Id", 3);
cmd2.ExecuteNonQuery();
}
trans.Commit(); // 提交事务
}
catch
{
trans.Rollback(); // 回滚事务
throw;
}
}批量插入(提高性能)
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
string sql = "INSERT INTO Users (name, email) VALUES (@Name, @Email)";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.Prepare(); // 预编译SQL语句
// 批量添加参数
cmd.Parameters.AddWithValue("@Name", "Eve");
cmd.Parameters.AddWithValue("@Email", "eve@example.com");
cmd.ExecuteNonQuery();
cmd.Parameters.AddWithValue("@Name", "Frank");
cmd.Parameters.AddWithValue("@Email", "frank@example.com");
cmd.ExecuteNonQuery();
}
}错误处理与调试
ASP.NET中需通过try-catch捕获数据库异常:
try
{
// 数据库操作代码
}
catch (MySqlException ex)
{
// 记录错误日志(如写入文件或日志表)
Console.WriteLine($"数据库错误: {ex.Message}");
throw; // 重新抛出异常或返回用户友好的错误信息
}常见问题与解答(FAQs)
如何处理MySQL连接超时?
问题:应用连接MySQL时出现“Timeout”错误,导致操作失败。
解答:
- 增加连接字符串中的
Connect Timeout参数,"Server=localhost;Database=testdb;Uid=root;Pwd=yourpassword;Connect Timeout=30;" - 检查MySQL服务器的网络延迟或资源占用,确保服务器可访问。
参数化查询有什么优势?
问题:直接拼接SQL字符串可能导致SQL注入攻击,如何安全操作?
解答:
- 使用
MySqlCommand.Parameters添加参数,避免字符串拼接:cmd.Parameters.AddWithValue("@Name", user.Name); - 参数化查询将值作为参数传递,而非嵌入SQL语句,有效防止SQL注入攻击,同时提升性能(数据库可缓存预编译语句)。
通过以上步骤,开发者可系统掌握ASP.NET操作MySQL数据库的核心技能,从基础CRUD到高级优化,结合错误处理与安全措施,构建稳定可靠的Web应用数据层。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/216593.html

