### C# 使用SqlDataAdapter.Update 更新数据库
在C#开发中,使用`SqlDataAdapter`与`SqlCommandBuilder`结合来更新数据库是一种常见的做法。这种方式不仅能够简化代码编写,还能够提高程序的健壮性和安全性。下面我们将详细探讨如何使用这两种工具来进行数据库的更新操作。
#### 一、了解SqlDataAdapter和SqlCommandBuilder
- **SqlDataAdapter**:`SqlDataAdapter`是ADO.NET中用来填充数据集(`DataSet`)的对象,并能将数据集中的更改同步回数据源。它通过`Select`、`Insert`、`Update`和`Delete`命令来执行这些操作。
- **SqlCommandBuilder**:`SqlCommandBuilder`则是一个辅助类,它可以自动生成用于更新、插入和删除数据所需的SQL命令文本。这使得开发者无需手动编写这些SQL命令,从而降低了出错的可能性。
#### 二、准备工作
为了演示如何使用`SqlDataAdapter`和`SqlCommandBuilder`进行数据库更新,我们首先需要准备以下环境:
1. **Visual Studio**:一个支持C#的集成开发环境。
2. **数据库**:这里假设使用的是SQL Server数据库,但其他类型的数据库也适用。
3. **连接字符串**:用于连接数据库的连接字符串。
#### 三、实现步骤
1. **创建连接**:使用连接字符串创建一个`SqlConnection`对象。
2. **创建SqlDataAdapter**:创建一个`SqlDataAdapter`对象,并设置其`SelectCommand`属性为查询数据的SQL命令。
3. **创建SqlCommandBuilder**:创建一个`SqlCommandBuilder`对象,并将其`DataAdapter`属性设置为前面创建的`SqlDataAdapter`对象。
4. **填充数据集**:使用`SqlDataAdapter`填充一个`DataSet`对象。
5. **修改数据**:在`DataSet`中修改数据。
6. **更新数据库**:调用`SqlDataAdapter`的`Update`方法将数据集中的更改同步回数据库。
#### 四、示例代码
下面是一个具体的示例代码,展示如何使用`SqlDataAdapter`和`SqlCommandBuilder`更新数据库中的数据:
```csharp
using System;
using System.Data;
using System.Data.SqlClient;
namespace UpdatingData
{
public partial class Form1 : Form
{
private string sConnection = "DataSource=scott;InitialCatalog=northwind;PersistSecurity Info=True;UserID=sa;PassWord=sa123";
public Form1()
{
InitializeComponent();
btnUpdate.Click += new EventHandler(btnUpdate_Click);
UpdateData();
}
private void UpdateData()
{
// 建立Connection
using (SqlConnection scConnection = new SqlConnection(sConnection))
{
// 建立Command
SqlCommand scCommand = new SqlCommand("SELECT * FROM Customers", scConnection);
// 创建SqlDataAdapter
SqlDataAdapter sdaAdapter = new SqlDataAdapter(scCommand);
// 创建SqlCommandBuilder
SqlCommandBuilder scbBuilder = new SqlCommandBuilder(sdaAdapter);
// 填充数据集
DataSet dsSet = new DataSet();
sdaAdapter.Fill(dsSet, "Customers");
// 修改数据集中的数据
dsSet.Tables["Customers"].Rows[0]["CompanyName"] = "New Company Name";
// 更新数据库
sdaAdapter.Update(dsSet, "Customers");
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
UpdateData();
}
}
}
```
#### 五、运行结果
运行上述代码后,当点击`btnUpdate`按钮时,会触发`UpdateData`方法。该方法会先从数据库中读取数据并填充到`DataSet`中,然后修改`DataSet`中的第一条记录的`CompanyName`字段,最后将这些更改同步回数据库。
#### 六、总结
通过以上步骤,我们可以清楚地看到如何使用`SqlDataAdapter`和`SqlCommandBuilder`来更新数据库中的数据。这种方式不仅简化了代码编写过程,而且提高了程序的安全性和可维护性。对于C#开发者来说,熟练掌握这种方法是非常重要的。