数据表/数据表如果存在更新否则插入

本文关键字:数据表 插入 存在 如果 更新 | 更新日期: 2023-09-27 17:53:30

试图找到这个问题的答案已经被证明是困难的,因为所有的答案都与SQL有关!

我有一个数据表TestTable。在这个DataTable中,我有三列,ID, ValueXValueY。当我向这个数据表添加新记录时,我试图使用一个插入方法来查看记录是否存在,但无法使用Select语句来使用多个字段。在我的情况下,我需要查看Datatable是否包含一个等于ID和ValueX的记录,如果包含,则更新。否则,将新记录添加到数据表中。
public void Insert(string ID, string ValueX, string ValueY)
{
DataRow dr = TestTable.NewRow();
dr["ID"] = ID;
dr["ValueX"] = ValueX
dr["ValueY"] = ValueY;
TestTable.Rows.Add(dr);
}

数据表/数据表如果存在更新否则插入

您可以使用Find方法

DataRowCollection。查找方法(Object[])

获取包含指定主键值的行。

查找特定的DataRow。注意,您的DataTable必须有一个合适的主键。

例子:

// create Table with ID, ValueX, ValueY
var table1 = new DataTable();
var id = table1.Columns.Add("ID");
var x = table1.Columns.Add("ValueX");
var y = table1.Columns.Add("ValueY");
// set primary key constain so we can search for specific rows
table1.PrimaryKey = new[] {id, x};
// some sample data
table1.Rows.Add(new Object[] {1, 1, 100});
table1.Rows.Add(new Object[] {2, 2, 200});
// find the row with key {1, 1} and update it, if it exists
// else you would want to create a new row
var exisiting = table1.Rows.Find(new Object[] {1, 1});
if (exisiting != null)
    exisiting.ItemArray = new object[] {1, 1, 9999};