C# 在c中使用数据适配器时重置自动增量#

C# 在c中使用数据适配器时重置自动增量#,c#,datatable,auto-increment,tableadapter,C#,Datatable,Auto Increment,Tableadapter,我试图将现有的Access数据库文件(template.mdb)作为新文件的模板。 我想删除一些表的行(但保留其他表)。 我通过VisualStudio2010生成的TableAdapters(通过添加项->数据->数据集)来“访问”表 在尝试删除一些现有表的内容并重置自动递增计数器时,我无法完成第二个任务。 我正试着用手来做这件事 var adapter = new MyTableTableAdapter(); var targetTable = adapter.GetData(); // m

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

在尝试删除一些现有表的内容并重置自动递增计数器时,我无法完成第二个任务。 我正试着用手来做这件事

var adapter = new MyTableTableAdapter();
var targetTable = adapter.GetData();
// mark each row for deletion
foreach (DataRow row in targetTable.Rows)
  row.Delete();
//找到以下序列

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

如何做到这一点


编辑:立即完成工作流

  • 复制temple mdb文件
  • 建立与复制文件的连接
  • 尝试删除某些表的所有行,但不是全部
  • 从外部xml文件读取新数据,其中包含以下引用:

    1
    //如果此行get的id为1

    1
    /。。。此行将无法正确导入

  • 将此数据添加到“新”数据库

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

    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);
    

    希望这对您有所帮助。

    如果您希望刷新所有数据并重用该表,那么

    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 
    

    我试图删除表并重新创建它,但这给了我一个例外:无法删除表。它要么是实际索引,要么是关系中使用的索引(已翻译,可能不是原始英文文本),您正在将数据保存回数据库吗?现在的顺序是:1)复制temple mdb文件2)建立与复制文件的连接3)尝试删除某些选定表的所有行4)从外部xml源读取新数据5)将此数据添加到“新建”数据基础您想维护表中的一些数据,还是想刷新所有数据并从新的自动增量开始?我只想删除一些表并重置它们的自动增量值。原因是,如果导入新数据,其中包含的id不匹配
    1 1
    如果导入
    someTableRow
    的数据集时id为10(因为这是自动递增的当前值),则如果尝试导入
    someOtherTableRow
    时,除了
    targetTable.Clear()
    部分外,我会遇到一个关键错误。但是如果我添加
    targetTable.Clear()
    它甚至不会删除现有的行,因为在更新步骤中现在有标记为“要删除”的行。
    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