使用OleDbDataAdapter插入自动编号

时间:2010-11-16 19:00:13

标签: c# ms-access oledb

我需要通过互联网上收到的XML文件在.NET中复制MS Access数据库。目标数据库必须与原始数据库完全相同(相同的内容和相同的PK)。

由于我要复制许多表,因此我使用OleDbDataAdapter为我生成插入查询。即使对于自动生成Guid作为主键的表,这也很有效。 OleDbCommandBuilder(cmdBuilder.GetInsertCommand())生成的INSERT命令在其参数中有Guid字段,因此插入的guid与源DB相同。

我遇到的唯一问题是使用自动编号整数作为主键的表。生成的INSERT命令不包含PK字段,因此当序列中存在漏洞时,插入的数字与源数据库不匹配。

生成insert命令时是否隐藏了包含autonumber列的某个属性?

这是我的代码:

public void InsertContentFromXml(string tableName, string xml)  
{  
   using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + tableName + "]", _connection))
   {  
      OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);  
      OleDbCommand insertCommand = builder.GetInsertCommand();  
      // insertCommand does not have the autonumber column in its insert query  
   }  
}

该表有3个字段:
IdReport [整数/自动编号]
ReportName [文字]
ReportType [文字]

insert命令生成2个参数:ReportName和ReportType

谢谢

1 个答案:

答案 0 :(得分:0)

您需要自己创建INSERT命令及其参数。