如何使用 TableAdapters 更新数据库 table 中的单个行/单个单元格?
How to update a single row / single cell in a database table using TableAdapters?
我只想更新我的数据库(sql-服务器)中的单个行/单个单元格而不是整个 table,有没有办法做到这一点?我尝试了以下操作(假设我知道我的 table 中有一行索引为 9,所以我不需要检查并且我知道我的 table 中有第三列所以我不必担心任何超出范围的索引都会抛出异常:
// 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.
确保您正在使用的 table 有一个主键,为此在 sql-server 中为您希望成为主键的列执行以下 SQL 命令键(您的列名):
ALTER TABLE dbo.yourTableName
ALTER COLUMN yourColumnName int NOT NULL;
此命令将确保 yourColumnName 不能为 Nullable,这是主键的情况。下一步执行:
ALTER TABLE dbo.yourTableName ADD PRIMARY KEY (yourColumnName);
这改变了 table 现在有一个你想要的列的主键。现在回到 Visual Studio 2017 年,在 Solution Explorer、double-click myDataBaseDataSet.xsd 文件中,这会显示您的 table 模式.滚动到 yourTableName,它现在应该有一个主键,右键单击它(这里表示 myTableNameTableAdapter header 名称)并选择 Configure... 选项。 TableAdapter 配置向导将 pop-up。单击 高级选项... 按钮,您应该会看到复选框标题 刷新数据 table 现在已选中。如果你之前看过这个是没有勾选的,勾选后无法保存。这允许您更新数据库中的 table。
上面给出的代码不需要修改。
我只想更新我的数据库(sql-服务器)中的单个行/单个单元格而不是整个 table,有没有办法做到这一点?我尝试了以下操作(假设我知道我的 table 中有一行索引为 9,所以我不需要检查并且我知道我的 table 中有第三列所以我不必担心任何超出范围的索引都会抛出异常:
// 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.
确保您正在使用的 table 有一个主键,为此在 sql-server 中为您希望成为主键的列执行以下 SQL 命令键(您的列名):
ALTER TABLE dbo.yourTableName
ALTER COLUMN yourColumnName int NOT NULL;
此命令将确保 yourColumnName 不能为 Nullable,这是主键的情况。下一步执行:
ALTER TABLE dbo.yourTableName ADD PRIMARY KEY (yourColumnName);
这改变了 table 现在有一个你想要的列的主键。现在回到 Visual Studio 2017 年,在 Solution Explorer、double-click myDataBaseDataSet.xsd 文件中,这会显示您的 table 模式.滚动到 yourTableName,它现在应该有一个主键,右键单击它(这里表示 myTableNameTableAdapter header 名称)并选择 Configure... 选项。 TableAdapter 配置向导将 pop-up。单击 高级选项... 按钮,您应该会看到复选框标题 刷新数据 table 现在已选中。如果你之前看过这个是没有勾选的,勾选后无法保存。这允许您更新数据库中的 table。
上面给出的代码不需要修改。