代码之家  ›  专栏  ›  技术社区  ›  sergtk

C WinForms-DataGridView/SQL Compact-主键列中的负整数

  •  3
  • sergtk  · 技术社区  · 17 年前

    我刚在WinForms中变脏了,通过一个可爱的教程,我发现了将数据库表拖到主窗体的设计视图中的魔力。所以,一切都很好,我有了我的DataGridView,所有列都表现得很漂亮。

    但是…

    当我针对这个全新的、空的.sdf(空的,只保存我创建的两个表,它们本身是空的)运行我的应用程序时,每当我试图创建第一条记录时,在对应于我的主键/标识列的列中会得到-1。

    知道为什么会这样吗?如果有帮助,列是 int .

    2 回复  |  直到 13 年前
        1
  •  3
  •   Craig    17 年前

    因为它是一个标识列,而您尚未将其保存到数据库中,所以它是-1。我假设这是在您将表保存回数据库之前,对吗?您需要在正确设置该值之前执行插入。

        2
  •  5
  •   Matt Hamilton    17 年前

    @Brian-1是默认值的一个好选择,因为没有“真实”行的标识可能小于零。如果它默认为0或1,那么可能会与现有行发生冲突,从而导致主键冲突。

    对于在保存前保持脱机状态并创建多行的应用程序,常见的做法是对每一新行的标识继续向后计数(-2,-3,-4)。然后在保存它们时,服务器可以用表中的“next”值替换它们。

    推荐文章