SQL CE &数据集-行不存在
本文关键字:-行 不存在 数据集 CE SQL | 更新日期: 2023-09-27 18:01:39
我(新的和)与SQL CE数据库工作,稍后将连接到一个项目,我们发送和接收信息到一个设备通过SerialPort。该数据库将存储有关通信的每个部分的信息。当涉及到更新Dataset并将更新后的数据提交到数据库时,我有点卡住了。
data = new DataSet();
adapter = new SqlCeDataAdapter("SELECT * FROM " + [table_name])
builder = new SqlCeCommandBuilder(adapter);
adapter.Fill(data, [table_name]);
data.Tables[table_name].Rows[identity_value][a_column] = a_column_value;
adapter.Update(data, [table_name]);
在我运行这个方法之前,我要确保我在表中有一个身份值为1的记录。然而,在我调用adapter.Update()之前,我得到了一个There is no row at position 1
IndexOutOfRangeException。我假设我误解了如何使用和更新数据集。任何建议吗?
我已经尝试查看数据集之前尝试更新行,但调试器似乎不让我窥视数据集,有办法做到这一点吗?
try this:
var rows = data.Tables[table_name].Select(String.Format("[Id] = {0}",identity_value));
if (rows.Length == 1)
{
rows[0][a_column] = a_column_value;
}
您对属性Rows
的解释是错误的
data.Tables[table_name].Rows[ROWINDEX][COLUMNINDEX]
ROWINDEX是数组索引而不是标识
一个建议:
如果你必须使用DataSet
,那么加载表模式信息也与SqlCeDataAdapter。FillSchema:
adapter.FillSchema(data.Tables[table_name], SchemaType.Mapped);
adapter.Fill(data, [table_name]);
只加载数据:
然后,如果你至少有一个列指定为主键列在DataTable
中,你可以得到行与DataRowCollection。寻找方法:
DataRow foundRow = data.Tables[table_name].Rows.Find(identity_value);