[英]Exception when adding a record to an Access 2007 database in c#
[英]Adding a record to access database from C#
我在C#中有一个Form Windows程序,它将记录添加到数据库并可以将其删除。
在数据库中我有ID(这是自动编号),但如果我删除一个记录,如果我想添加另一个记录,自动编号增加,不添加缺少的数字。
我的意思是,如果我的Access数据库中有9条记录,我想删除一条记录,它将是8,但是当我添加一条新记录时,我得到的是10而不是9.像这张图片:
那有什么解决方案吗?
如果它是一个自动编号,则数据库将生成一个大于上一个使用的数字 - 这就是关系数据库的工作方式。 为什么会有这个解决方案? 想象一下,删除5,你想要做什么,让自动编号创建下一条记录为5? 如果你在C#app中显示一个id - 坏主意 - 那么把它改成你可以控制的其他值。
然而,你想要实现的目标没有意义。
如果我删除一条记录,如果我想添加另一条记录,则自动编号会增加并且不会添加缺少的数字。
[...]
那有什么解决方案吗?
最简洁的答案是不”。 使用后,即使已删除的记录在表中具有最大的自动编号值,通常也不会重复使用自动编号值。 这是因为(至少在某种程度上)Jet / Ace数据库引擎必须能够在多用户环境中管理自动编号值。
(上述规则的一个例外是,如果压缩Access数据库,则具有顺序自动编号字段的表的下一个可用自动编号值将重置为Max(current_value)+1。)
有关自动编号字段如何工作的更多详细信息,请参阅此处的其他答案。
在MS访问中,没有任何解决方案。 但是在sql server的情况下,您可以使用Identity列创建自己的函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.