2011-08-29 98 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