【发布时间】:2018-03-29 10:20:11
【问题描述】:
我在 sqlite 数据库中有一个表,其中包含“id”列 当我按下按钮时,我使用此代码自动增加此列
con.Open();
SQLiteCommand cmd = new SQLiteCommand("Select MAX(id)+1 FROM Data", con);
object obj = cmd.ExecuteScalar();
int Amount = (obj != null && obj != DBNull.Value) ? Convert.ToInt32(obj) : 1;
con.Close();
tId.Text = Convert.ToString(Amount);
一切正常,直到表中有 10 条记录,然后它拒绝检索 id 号“11”
【问题讨论】:
-
为什么不将 ID 列定义为具有 AUTOINCREMENT 标志而忘记它?
-
“拒绝”是什么意思?会发生什么?
-
当有 10 条记录并且我尝试按下按钮时,它会得到已经存在的 ID 号“10”@MichaelButscher
-
为什么需要下一个
id值?你是用它来插入的吗?如果是这样,那是非常糟糕的设计。正如@Steve 已经提到的,让数据库为您执行此操作。通过使用自动增量,您可以为 id 插入所有值 except,sqllite 将为您在任何新记录上设置。 -
谢谢两位,我做到了,它成功了,但是另一个函数导致了很多错误,我会尝试改变它。
标签: c# sqlite auto-increment