无法从 DataTable 中选择 DataRow

Posted

技术标签:

【中文标题】无法从 DataTable 中选择 DataRow【英文标题】:Can't select DataRow from DataTable 【发布时间】:2020-02-27 10:30:51 【问题描述】:

我正在尝试防止将重复数据插入到 MS Access 表中,如下所示,

MS Access 表(记录)的列:Situation、Check_Item,并且从表中没有数据开始。 DataSet 中的 DataTable 填充有查询 "SELECT * FROM Record WHERE Situation = 'A'"

然后我尝试做这个过程,

DataRow = DataTable.Select("Check_Item = '"+InputTextBox.Text"'");
If (DataRow.Length == 0)

  Use OleDbCommand to insert InputTextBox.Text string to Check_Item of Record table.

结果:

第一次键入(例如123456),因为表中没有数据,所以将123456插入到Record表中。 但是在第二次输入 123456 时,它仍然被插入到 Record 表中。 这个过程发生了什么?

【问题讨论】:

在添加下一行之前,您是否使用新添加的行更新了DataTable 是的...大约 30 分钟前我刚刚发现我忘记更新 DataTable...仍然感谢您的评论。 【参考方案1】:

假设您的 DataTable 变量的名称为 table,并且您创建了它并将其正确链接到您的 MS Access 数据库:

DataRow[] rows = table.Select("Check_Item = '"+InputTextBox.Text"'"); //Selects all rows where the condition is met.
If (rows.Length == 0)

   //No row met the condition so create a new one and add it to the table.
   DataRow newRow = table.NewRow(); //Creates a new row with the same schema (columns) as the table.
   newRow["Check_Item"] = InputTextBox.Text; //Assigns the value.
   table.Rows.Add(newRow); //Adds the new row to the row collection of the table.
   table.AcceptChanges(); //Commits and persist the changes done to the table.

请务必查看this 以及DataTable 的官方文档。

【讨论】:

感谢您的回复,我刚刚发现我忘记更新DataTable了哈哈...我会按照这个流程做错误检查,谢谢。

以上是关于无法从 DataTable 中选择 DataRow的主要内容,如果未能解决你的问题,请参考以下文章

如何从DataGridView中的行获取DataRow

向/从 DataTable 添加/删除 DataRow 的正确方法是啥

Datatable删除行的Delete和Remove方法

如何从 DataGridView 中的一行获取 DataRow

DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法

Datatable LINQ select datarow 只返回一行以及如何排序