1

我正在尝试将现有的 Access 数据库文件 (template.mdb) 作为新文件的模板。我想删除一些表的行(但保留其他表)。我通过 Visual Studio 2010 生成的 TableAdapters(通过添加项目 -> 数据 -> 数据集)“访问”表。

在尝试删除一些现有表的内容并重置自动增量计数器时,我无法完成第二个任务。我正在尝试通过

var adapter = new MyTableTableAdapter();
var targetTable = adapter.GetData();
// mark each row for deletion
foreach (DataRow row in targetTable.Rows)
  row.Delete();

// 在这里找到以下序列。

targetTable.IDProductColumn.AutoIncrement = true;
targetTable.IDProductColumn.AutoIncrementSeed = 0;
targetTable.IDProductColumn.AutoIncrementStep = -1;
targetTable.IDProductColumn.AutoIncrementSeed = -1;

// apply the changes
adapter.Update(targetTable);

这确实会删除现有行,但不会重置自动增量。

如何实现?


编辑:现在完成工作流程

  1. 复制寺庙mdb文件
  2. 建立与复制文件的连接
  3. 尝试删除某些表的所有行,但不是全部
  4. 从外部 xml 文件中读取新数据,其中包含如下引用:

    <tableARow><id>1</id></tableARow>// 如果这一行是一个 id <> 1 ...

    <tableBRow><idRefTableARow>1</idRefTableARow></tableBRow>// ... 此行将无法正确导入

  5. 将此数据添加到“新”数据库
4

2 回答 2

0

您可以在代码中构建一个新的数据表并添加所需的列,而不是加载旧表并删除所有项目。

var Table = new DataTable();


var columnA = new DataColumn();
columnA.ColumnName = "Your Column Name";
var columnB = new DataColumn();
columnB.ColumnName = "Your Column Name";
var columnC = new DataColumn();
columnC.ColumnName = "Your Column Name";



Table.Columns.Add(columnA);
Table.Columns.Add(columnB);
Table.Columns.Add(columnC);

希望这会有所帮助。

于 2012-09-10T13:52:59.420 回答
0

如果要刷新所有数据并重用表,那么

dt.Clear();
dt.Column["IDProductColumn"].AutoIncrementStep = -1;  --Change the step value to get around the logic in the set_AutoIncrementSeed
dt.Column["IDProductColumn"].AutoIncrementSeed = -1;  --reset the AutoIncrementSeed

dt.Column["IDProductColumn"].AutoIncrementStep = 1;  -- set the new step
dt.Column["IDProductColumn"].AutoIncrementSeed = 1;  --  set the new seed 
于 2012-09-10T14:09:41.430 回答