ADO.NET 是微软提供的一组用于访问数据源(如关系数据库)的类库,它是 .NET 框架的一部分。ADO.NET 提供了对数据的访问和操作功能,允许开发者在 .NET 应用程序中执行数据查询、插入、更新和删除等操作。以下是使用 ADO.NET 进行数据库访问的基本步骤:
1. 创建连接
首先,你需要创建一个到数据库的连接。这通常是通过 SqlConnection
类(对于 SQL Server 数据库)来实现的。你需要提供数据库的连接字符串,它包含了数据库的位置、名称、认证信息等。
|
string connectionString = "your_connection_string_here"; |
|
using (SqlConnection connection = new SqlConnection(connectionString)) |
|
{ |
|
// 打开连接 |
|
connection.Open(); |
|
// 在这里执行数据库操作 |
|
} |
2. 执行命令
一旦连接建立,你就可以使用 SqlCommand
类来执行 SQL 命令。你可以通过 SqlCommand
的构造函数将 SQL 语句或存储过程名传递给它,并设置其 Connection
属性为之前创建的连接对象。
|
string sql = "SELECT * FROM YourTable"; |
|
SqlCommand command = new SqlCommand(sql, connection); |
3. 读取数据
如果你执行的是一个查询操作,你可以使用 SqlDataReader
类来读取从数据库中返回的数据。SqlDataReader
提供了一种从数据库中读取数据行的方式,你可以逐行遍历结果集。
|
using (SqlDataReader reader = command.ExecuteReader()) |
|
{ |
|
while (reader.Read()) |
|
{ |
|
// 读取数据,例如: |
|
int columnValue = reader.GetInt32(0); // 读取第一列的值,假设它是整型 |
|
} |
|
} |
4. 执行非查询操作
对于插入、更新或删除操作,你可以使用 SqlCommand
的 ExecuteNonQuery
方法。这个方法返回一个整数,表示受影响的行数。
|
string updateSql = "UPDATE YourTable SET ColumnName = @Value WHERE ConditionColumn = @Condition"; |
|
SqlCommand updateCommand = new SqlCommand(updateSql, connection); |
|
updateCommand.Parameters.AddWithValue("@Value", newValue); |
|
updateCommand.Parameters.AddWithValue("@Condition", conditionValue); |
|
int rowsAffected = updateCommand.ExecuteNonQuery(); |
5. 使用事务
如果你需要确保一系列数据库操作要么全部成功,要么全部失败(即原子性),你可以使用事务。在 ADO.NET 中,你可以通过 SqlTransaction
类来实现事务。
|
SqlTransaction transaction = connection.BeginTransaction(); |
|
try |
|
{ |
|
// 在这里执行你的数据库操作,并设置每个 SqlCommand 的 Transaction 属性为当前事务 |
|
// ... |
|
|
|
// 如果所有操作都成功,提交事务 |
|
transaction.Commit(); |
|
} |
|
catch |
|
{ |
|
// 如果发生异常,回滚事务 |
|
transaction.Rollback(); |
|
throw; // 重新抛出异常,以便上层调用者能够处理 |
|
} |
6. 使用参数化查询
为了防止 SQL 注入攻击,你应该始终使用参数化查询而不是直接将用户输入拼接到 SQL 语句中。在上面的示例中,我们已经展示了如何使用参数化查询。
7. 处理异常
在执行数据库操作时,你应该始终准备好处理可能发生的异常。这通常涉及到捕获 SqlException
(或更一般的 Exception
)并适当地处理它(例如,通过回滚事务、记录错误日志、向用户显示错误消息等)。
8. 关闭连接
最后,确保在完成数据库操作后关闭连接。在上面的示例中,我们使用了 using
语句来自动管理 SqlConnection
和 SqlDataReader
的生命周期,这确保了即使发生异常,连接和读取器也会被正确关闭。
使用 ADO.NET 进行数据库访问是一个强大且灵活的方式,但它也需要你仔细管理连接、命令、读取器和事务等资源。通过遵循最佳实践(如使用参数化查询、处理异常、使用事务等),你可以构建出既安全又高效的数据库应用程序。