Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Tableadapter插入与复制相同记录的快速方法_C#_Ado.net_Tableadapter - Fatal编程技术网

C# 使用Tableadapter插入与复制相同记录的快速方法

C# 使用Tableadapter插入与复制相同记录的快速方法,c#,ado.net,tableadapter,C#,Ado.net,Tableadapter,我有一个带有一系列字段的datatable,它由tableadapter填充数据。通常,需要插入的记录略有不同(仅id)。我不希望用户再次键入所有内容,所以,有没有一种快速的方法将当前记录插入数据库。请注意,我的所有插入、更新和删除操作都基于我的tableadapter //Get only one last record that has been added when the form load. bookTableAdapter.FillByLastID(bookDataSet.dtBoo

我有一个带有一系列字段的datatable,它由tableadapter填充数据。通常,需要插入的记录略有不同(仅id)。我不希望用户再次键入所有内容,所以,有没有一种快速的方法将当前记录插入数据库。请注意,我的所有插入、更新和删除操作都基于我的tableadapter

//Get only one last record that has been added when the form load.
bookTableAdapter.FillByLastID(bookDataSet.dtBook);

private void btnNew_Click(object sender, EventArgs e)
{  
  bookBindingSource.AddNew();  
}

private void btnSave_Click(object sender, EventArgs e)
{
  this.Validate();
  bookBindingSource.EndEdit();
  bookTableAdapter.Update(bookDataSet.dtBook);
}
尝试此操作以复制行:

        DataRow row = table.Rows[0]; // row you want to copy

        DataRow newRow = table.NewRow();
        newRow.ItemArray = row.ItemArray.ToArray();
        newRow["Id"] = 10;  // change Id

        table.Rows.Add(newRow);

接受的答案对我来说不起作用,因为TableAdapter查询返回的列比新行多,33。我的表有32列。这是遗留代码和数据库


然而,本文给出了答案:

一些代码示例会很好。因为不清楚您是如何进行更新工作的。你发布整个表还是什么?我只是在我的datadapater上更新方法。我一次发布一条记录。什么是GUid.NewGuid();?我收到一条错误消息:无法将“System.Guid”类型的对象强制转换为“System.IConvertable”类型。无法在ID列中存储。在我的示例Id列中,预期的类型是Int32,因为我看到您在那里有int,所以将其更改为一些int。请参阅我的更新