无法从 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的主要内容,如果未能解决你的问题,请参考以下文章
向/从 DataTable 添加/删除 DataRow 的正确方法是啥
如何从 DataGridView 中的一行获取 DataRow