我需要通过互联网上收到的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
谢谢
答案 0 :(得分:0)
您需要自己创建INSERT
命令及其参数。