【发布时间】:2010-11-17 03:02:53
【问题描述】:
我需要通过我通过 Internet 接收的 XML 文件在 .NET 中复制 MS Access 数据库。目标数据库必须与原始数据库完全相同(相同的内容和相同的 PK)。
因为我有很多表要复制,所以我使用 OleDbDataAdapter 为我生成插入查询。这很有效,即使对于将自动生成的 Guid 作为其主键的表也是如此。 OleDbCommandBuilder (cmdBuilder.GetInsertCommand()) 生成的 INSERT 命令的参数中有 Guid 字段,因此插入的 guid 与源 DB 相同。
我遇到的唯一问题是使用自动编号整数作为主键的表。生成的INSERT命令不包含PK字段,所以当序列有空洞时,插入的个数与源数据库不匹配。
在生成插入命令时,是否有隐藏在某处包含自动编号列的属性?
这是我的代码:
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 [整数/自动编号]
报告名称 [文本]
报告类型 [文本]
insert 命令生成 2 个参数:ReportName 和 ReportType
谢谢
【问题讨论】: