我只想更新单行/单个单元格而不是数据库(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.
答案 0 :(得分:0)
确保要使用的表具有主键,要执行此操作,请在sql-server中为您要用作主键的列(yourColumnName)执行以下SQL逗号:
ALTER TABLE dbo.yourTableName
ALTER COLUMN yourColumnName int NOT NULL;
此命令将确保yourColumnName不能为Nullable(主键就是这种情况)。接下来执行:
ALTER TABLE dbo.yourTableName ADD PRIMARY KEY (yourColumnName);
这将更改表,使其现在具有所需列的主键。现在返回Visual Studio 2017,在 Solution Explorer 中,双击myDataBaseDataSet.xsd文件,这将显示表架构的可视化。滚动到yourTableName,它现在应该有一个主键,右键单击它(这里表示myTableNameTableAdapter标头名称),然后选择 Configure ... 选项。将弹出一个TableAdapter配置向导。单击高级选项... 按钮,您应该看到现在已选中复选框标题刷新数据表。如果您在未检查之前查看过它,并且在检查后无法保存。这使您可以更新数据库中的表。
上面不需要的代码不需要修改。