C# 删除某些行后,重新排列自动增量列值

C# 删除某些行后,重新排列自动增量列值,c#,.net,sqlite,auto-increment,C#,.net,Sqlite,Auto Increment,表上的ID列等列将自动递增的情况。这仅仅意味着下一次插入到表中的ID比上一次多一个,因此所有ID都是唯一的 但是,如果从表中删除一行,该表将自动递增,就好像该行根本没有被删除一样。结果是数字序列中出现了一个缺口。这通常不是什么大问题,但您可能需要重置自动增量字段 PatientNo是主键,下面是我迄今为止尝试过的代码 private void txtincr() { int a; if (textPatientNo.Text == "")

表上的ID列等列将自动递增的情况。这仅仅意味着下一次插入到表中的ID比上一次多一个,因此所有ID都是唯一的

但是,如果从表中删除一行,该表将自动递增,就好像该行根本没有被删除一样。结果是数字序列中出现了一个缺口。这通常不是什么大问题,但您可能需要重置自动增量字段

PatientNo是主键,下面是我迄今为止尝试过的代码

    private void txtincr()
    {
        int a;
        if (textPatientNo.Text == "")
        {
            if (con.State == 0)
            {
                con.Open();
            }
            string Query= "select PatientNo from PatientRegistration";
            SQLiteDataAdapter DataAdapter = new SQLiteDataAdapter(Query,con);
            DataSet PatientDataSet = new DataSet();
            DataAdapter.Fill(PatientDataSet);
            if (PatientDataSet.Tables[0].Rows.Count != 0)
            {
                a = PatientDataSet.Tables[0].Rows.Count;
                a = a + 1;
                textPatientNo.Text = Convert.ToString(a);
                textPatientName.Focus();
            }
            else
            {
                textPatientNo.Text = "1";
                textPatientName.Focus();
            }
            con.Close();
        }
    }

当您将列声明为INTEGER主键时,无需执行任何操作,因为数据库会自动使用表中最大值之后的下一个值


将列声明为INTEGER主键自动递增时,当前计数器存储在sqlite_序列表中。你可以简单地回答。

你为什么要这样做?难道只有我一个人不能回答这个问题吗?请再解释一下-何时何地重置此问题与SQLite有关。
You can try using the SQL Query

    DBCC CHECKIDENT('TABLENAME',RESEED,initialvalue);