C#中的本地数据库,删除和添加新列

时间:2014-07-06 14:19:44

标签: c# sql sorting auto-increment local-database

我正在制作一个KTV系统,在该系统的一部分我需要一个数据库,我可以在其中添加卡拉OK歌曲,存储,删除和访问它们。我正在使用c#,VS2012。我的数据库的本地数据库,创建了一个包含5列(代码,标题,艺术家,流派,路径)的表。

  • 将我的代码设置为唯一键和主键,并自动增加w /默认值(1,1)
  • 路径列用于选择歌曲时播放视频文件的路径。

我没有对数据库函数进行编程,只需从数据源中拖放内置函数,如下所示: enter image description here

一切正常,所有基本功能都应该正常工作。添加它时会产生负面和奇怪的自动递增主键(代码列),但我知道它很好,因为每次重新运行它都是正确的。现在

有一件事,在我添加数据连接数据源之后,我还添加了一个新数据连接,连接到位于bin文件夹中的数据库该项目。因为如果我不这样做,每次刷新数据库时都会删除其中的数据。或者每次关闭项目时,它都会删除数据,并从Project文件夹中获取Empty数据库中的数据,而不是从bin中获取数据。

问题: 例如:  我试图添加6行然后将它们全部删除,我想在每次添加新行时,代码列将从1 2和3再次开始但不是7,8和9.它似乎是跳过因为那里已经有6个现有列,但是已检查数据库中的数据表,但事实并非如此。删除的6列也消失了,与表单中的数据相同。   - For example:

以及类似的东西

enter image description here

我希望代码列始终排序,如果我删除或在本地数据库中添加新行。

4 个答案:

答案 0 :(得分:0)

这完全取决于您删除数据的方式。

DELETE * FROM ... 

不会影响您的自动增量主键生成器。然而,

TRUNCATE TABLE ...

会将计数器重置为其初始种子。

答案 1 :(得分:0)

我建议您不要尝试控制自动生成的ID(代码),而是使用ROW_NUMBER()函数在查询中引入新列。

答案 2 :(得分:0)

如果要重置主键或代码列,请截断表

Truncate Table tableName

答案 3 :(得分:0)

像其他人说的那样截断表示会工作或者使用DCBB CHECKIDENT:

DBCC CHECKIDENT (TABLENAMEHERE, RESEED, 0)