C# 在c中使用数据适配器时重置自动增量#
我试图将现有的Access数据库文件(template.mdb)作为新文件的模板。 我想删除一些表的行(但保留其他表)。 我通过VisualStudio2010生成的TableAdapters(通过添加项->数据->数据集)来“访问”表 在尝试删除一些现有表的内容并重置自动递增计数器时,我无法完成第二个任务。 我正试着用手来做这件事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
var adapter = new MyTableTableAdapter();
var targetTable = adapter.GetData();
// mark each row for deletion
foreach (DataRow row in targetTable.Rows)
row.Delete();
//找到以下序列
这确实会删除现有行,但不会重置自动增量
如何做到这一点
编辑:立即完成工作流
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