我有一个使用sqlite客户端的应用程序。在应用程序中我将数据插入表中,我需要Id是自动提升。无论如何要在执行中获取id? s.th喜欢sqlparameter或...
我使用以下方法获取数据,我认为rec变量保持id,但它总是rec = 1,我不知道这有什么用?
int x= (System.Windows.Application.Current as App).db.Insert
<CsWidget>(ObjWidget, @"Insert into Tbl_Widget (Name) values(@Name");
public int Insert<T>(T obj, string statement) where T : new()
{
Open();
SQLiteCommand cmd = db.CreateCommand(statement);
int rec = cmd.ExecuteNonQuery(obj);
return rec;
}
答案 0 :(得分:0)
尝试使用ExecuteScalar方法而不是ExecuteNonQuery。它可以这样工作,具体取决于您的SQLite包装器。如果不是插入后单独的查询是你唯一的方法。
答案 1 :(得分:0)
正如@ gleb.kudr所说,插入后的单独查询是唯一的方法。
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT LAST_INSERT_ROWID()";
object r = cmd.ExecuteScalar();
int id = 0;
int.TryParse( r.ToString(), out id );