2011-08-29 97 views
0

我有一个已经填充的数据表。现在我想添加几行到那个数据表,但是一些行可能已经存在于数据表中。我知道它没有要求,但这是要求。如何将数据行添加到已存在的数据表?

我试了几件事情,并得到了“该表已存在的行:&这一行属于某个其他表”。我也试过importRow,但我想它避免了重复由dafault。

有没有办法做到这一点。如果数据表有7行,我想要添加3行,无论它是否已经存在或没有。我的目标是发送10行到调用函数。

或者还有其他方法吗?

UPDATE

使用 rowsToAdd.CopyToDataTable(dsCount.Tables[2], LoadOption.PreserveChanges);的作品,但我不知道这是正确的方式。

+0

rowsToAdd.CopyToDataTable(dsCount.Tables [2],LoadOption.PreserveChanges);这是工作,但不知道是否正确做 – Vani

回答

3

来检查任何重复尝试

if (table.Rows.Contain(PriKeyTypeValue)) /*See if a Primary Key Value is in 
the table already */ 
    continue; 
else 
    table.Row.Add(value1, value2, value3); 

如果您希望能够插入重复行,但不希望有一个异常抛出设置您的主键作为一个独特的自我递增的int,然后您可以插入尽可能多的重复项,而不必检查该表是否包含该值。只要确保有足够的重复就可以了。有很多设置主键的例子,只是搜索它(msdn至少有一个)。下面是一个示例:

DataTable table = new DataTable(); 

table.Columns.Add("Column", typeof(int)); 

DataColumn column = table.Columns["Column"]; 
column.Unique = true; 
column.AutoIncrement = true; 
column.AutoIncrementStep = 1; //change these to whatever works for you 
column.AutoIncrementSeed = 1; 
table.PrimaryKey = new DataColumn[] { column }; 
+0

感谢您的代码。下面的代码工作,但我会尝试你的建议。 rowsToAdd.CopyToDataTable(dsCount.Tables [2],LoadOption.PreserveChanges); – Vani

+0

我使用的'table.Row.Add()'不像下面的代码那样健壮,因为所有的值都需要按正确的顺序,否则你可能会把错误的数据值放到表中,但它仍然应该有助于一些想法适合你。 – Trio

1

我相信你可以使用DataTable的NewRow()函数,如果你只是将一行附加到表中。

DataTable table = new DataTable();  
DataRow row = table.NewRow(); 

table.Rows.Add(row); 

这样不够吗?

+0

我不认为它会增加行,直到你明确地调用'datatable.Rows.Add'方法 –

+0

@哈里斯哈桑:你是对的那部分,并且我已经更新了我的答案。我认为只要他们在桌面上没有任何独特的限制,这样做就行,对吧?当然,它比OP会尝试做什么更适合,对吗? –

4

您可以使用DataTable下面的代码

DataRow newRow = dataTable.NewRow(); 
dataTable.Rows.Add(newRow); 
3

添加新行创建一个使用NEWROW()函数创建一个新的行。

var dataTable = new DataTable(); 
var dataRow = dataTable.NewRow(); 

然后添加新行到您的数据表

dataTable.Rows.Add(dataRow) 
+0

@上面的代码不会添加已经存在的行。我的需求有时需要添加已有的行来进行计数。 – Vani