我需要通过在互联网上收到的XML文件在.NET中复制MS Access数据库。目标数据库必须与原始数据库完全相同(相同的内容和相同的PKs)。
因为我有许多表要复制,所以我使用OleDbDataAdapter为我生成insert查询。即使对于将自动生成的Guid作为其主键的表,这也能很好地工作。OleDbCommandBuilder (cmdBuilder.GetInsertCommand())生成的INSERT命令的参数中有Guid字段,因此插入的guid与源DB相同。
我遇到的唯一问题是使用自动编号整数作为主键的表。生成的INSERT命令不包含主键字段,因此当序列中有孔时,插入的数字与源数据库不匹配。
在生成insert命令时,是否有隐藏在某个位置的属性将包含自动编号列?
下面是我的代码:
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命令生成两个参数: ReportName和ReportType
谢谢
发布于 2010-11-17 03:02:54
您需要自己创建INSERT命令及其参数。
https://stackoverflow.com/questions/4197912
复制相似问题