dataAdapter.Update(dataTable); 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。 请举一个实例
时间: 2024-01-22 14:19:12 浏览: 234
假设有一个 `students` 表,其中包含以下列:`id`、`name`、`age`、`gender`。现在,我们想要更新名为“Tom”的学生的年龄和性别信息。我们可以使用以下代码:
```
// 创建连接对象
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;";
SqlConnection connection = new SqlConnection(connectionString);
// 创建DataAdapter对象
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM students", connection);
// 创建UpdateCommand
SqlCommand updateCommand = new SqlCommand("UPDATE students SET age=@age, gender=@gender WHERE name=@name", connection);
updateCommand.Parameters.Add("@age", SqlDbType.Int, 4, "age");
updateCommand.Parameters.Add("@gender", SqlDbType.NVarChar, 10, "gender");
updateCommand.Parameters.Add("@name", SqlDbType.NVarChar, 50, "name");
dataAdapter.UpdateCommand = updateCommand;
// 获取名为"Tom"的学生的DataRow对象
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
DataRow[] rowsToUpdate = dataTable.Select("name = 'Tom'");
// 修改行数据
foreach (DataRow row in rowsToUpdate)
{
row["age"] = 20;
row["gender"] = "Male";
}
// 将修改保存到数据库
dataAdapter.Update(dataTable);
```
在上面的代码中,我们首先创建了一个 `SqlDataAdapter` 对象,并使用 `SELECT * FROM students` 语句填充了一个 `DataTable` 对象。然后,我们使用 `Select` 方法获取名为“Tom”的学生的 `DataRow` 对象,并修改了他的年龄和性别信息。最后,我们调用 `Update` 方法将修改保存到数据库中。在这个过程中,`DataAdapter` 会自动调用我们创建的 `UpdateCommand` 来更新数据库中的数据。
阅读全文