C# 如何使用TableAdapters更新数据库表中的单行/单个单元格?

C# 如何使用TableAdapters更新数据库表中的单行/单个单元格?,c#,sql-server,tableadapter,C#,Sql Server,Tableadapter,我只想更新一行/单个单元格,而不是数据库(sql server)中的整个表,有什么方法可以做到这一点吗?我尝试了以下方法(假设我知道我的表中有一行的索引为9,所以我不需要检查,并且我知道我的表中有第三列,所以我不需要担心任何超出范围的索引会引发异常: // Identifiers used are: var myTableAdapter = new myDatabaseTableAdapters.myTableTableAdapter(); var myDataTable = myTableAd

我只想更新一行/单个单元格,而不是数据库(sql server)中的整个表,有什么方法可以做到这一点吗?我尝试了以下方法(假设我知道我的表中有一行的索引为9,所以我不需要检查,并且我知道我的表中有第三列,所以我不需要担心任何超出范围的索引会引发异常:

// Identifiers used are:
var myTableAdapter = new myDatabaseTableAdapters.myTableTableAdapter();
var myDataTable = myTableAdapter.GetData();
string myQuery = "[Index] = '9'",
    updatedValue = "Some new value";

try 
{
    // Grab the row which needs updating
    var rowForUpdate = (System.Data.DataRow)myDataTable.Select(myQuery)[0];
    rowForUpdate[2] = updatedValue;
    myTableAdapter.Update(rowForUpdate);
}
catch (System.Exception ex) 
{
    System.Console.WriteLine(ex.Message);
}
但是,这会引发以下异常:

Update requires a valid UpdateCommand when passed DataRow collection with modified rows.

确保正在使用的表具有主键,为此,请在SQL server中为要作为主键的列(您的ColumnName)执行以下SQL命令:

此命令将确保您的ColumnName不能为Null,这是主键的情况。下一步执行:

ALTER TABLE dbo.yourTableName ADD PRIMARY KEY (yourColumnName);
这会更改表,使其现在具有所需列的主键。现在回到Visual Studio 2017,在解决方案资源管理器中双击myDataBaseDataSet.xsd文件,这将显示表架构。滚动到您的TableName,它现在应该具有主键,右键单击它(这里指的是myTableNameTableAdapter标头名称)然后选择“配置…”选项。将弹出一个TableAdapter配置向导。单击“高级选项…”按钮,您将看到复选框标题“刷新数据表”现在处于选中状态。如果您在未选中该复选框之前查看该复选框,并且在选中该复选框后无法保存该复选框,则可以在数据库中更新该表数据库

上述代码不需要修改

ALTER TABLE dbo.yourTableName ADD PRIMARY KEY (yourColumnName);