0

我有一个使用 sqlite 客户端的应用程序。在应用程序中,我将数据插入表中,我需要自动增量的 Id。无论如何要在executenonquery中获取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;
                     }
4

2 回答 2

0

正如@gleb.kudr 所说,插入后的单独查询是唯一的方法。

cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT LAST_INSERT_ROWID()";

object r = cmd.ExecuteScalar();

int id = 0;
int.TryParse( r.ToString(), out id );
于 2013-01-25T16:38:42.690 回答
0

尝试 ExecuteScalar 方法而不是 ExecuteNonQuery。它可以根据您的 SQLite 包装器以这种方式工作。如果不是插入后的单独查询是您唯一的方法。

于 2013-01-25T12:29:14.930 回答