C# 操作数据库 修改数据,并允许异常时 回滚数据
时间: 2024-09-18 12:09:33 浏览: 40
c# 数据库操作
在C#中,操作数据库并处理异常以保证数据完整性通常涉及使用ADO.NET,这是一种.NET框架提供的用于访问各种数据库的技术。以下是基本步骤:
1. **连接到数据库**:
使用`SqlConnection`类创建一个新的数据库连接,提供数据库服务器地址、数据库名称、用户名和密码。
```csharp
using System.Data.SqlClient;
string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password;";
SqlConnection connection = new SqlConnection(connectionString);
```
2. **打开连接**:
调用`Open()`方法建立与数据库的连接。
```csharp
connection.Open();
```
3. **执行命令**:
使用`SqlCommand`来构建SQL查询,可以是更新操作。例如,假设你想更新用户信息:
```csharp
SqlCommand command = new SqlCommand("UPDATE Users SET Name = @name WHERE Id = @id", connection);
command.Parameters.AddWithValue("@name", newName);
command.Parameters.AddWithValue("@id", userId);
```
4. **捕获异常**:
在执行数据库操作时,可能会发生`SqlException`。使用`try-catch`块来捕获这些异常,并在异常发生时回滚事务:
```csharp
try
{
int rowsAffected = command.ExecuteNonQuery(); // 执行更新操作
}
catch (SqlException ex)
{
Console.WriteLine($"Error updating data: {ex.Message}");
// 如果有需要,可以使用以下代码回滚事务
connection.Rollback();
}
finally
{
connection.Close(); // 关闭连接,无论是否发生异常
}
```
5. **事务管理**:
如果你希望在多个操作之间保持原子性,可以在`SqlCommand`上设置`Transaction`属性,然后在`BeginTransaction()`和`Commit()`或`Rollback()`方法中管理事务。
```csharp
using(SqlTransaction transaction = connection.BeginTransaction())
{
try
{
command.Transaction = transaction;
// 执行其他更新操作...
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
throw;
}
}
```
阅读全文