SQLite中获取最新添加自增ID,last_insert_rowid()的使用

今天在我的数据类中给Add方法完善一下.想要实现添加之后返回添加的实体的自增ID,遂想起了select last_insert_rowid(),可是用了之后就是不好使,各种返回0,

后来经度娘指教,我发现一句话"在同一个SQLiteConnection中...",原来如此.修改代码,搞定!

 

我之前是这么写的

DBHelperSQLite.ExecuteSql(sql,parameters);
return Convert.ToInt32(DBHelperSQLite.GetSingle("select last_insert_rowid()"));

注意:由于我的DBHelper写法的原因,这样的话就变成了两个SQLiteConnection

改进后

return DBHelperSQLite.ExecuteSql(sql+ ";select last_insert_rowid();", parameters);

DBHelper修改

 1 public static int ExecuteSql(string SQLString, List<SQLiteParameter> para)
 2     {
 3         using (SQLiteConnection connection = new SQLiteConnection(connectionString))
 4         {
 5             using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))
 6             {
 7                 try
 8                 {
 9                     connection.Open();
10                     foreach (SQLiteParameter p in para)
11                     {
12                         cmd.Parameters.Add(p);
13                     }
14                     int rows =0;
15                     if(SQLString.IndexOf("insert") != -1)
16                         rows = Convert.ToInt32(cmd.ExecuteScalar());
17                     else
18                         rows = cmd.ExecuteNonQuery();
19                     return rows;
20                 }
21                 catch (SQLiteException e)
22                 {
23                     connection.Close();
24                     throw e;
25                 }
26             }
27         }
28     }

注意15行到18行,判断是否是insert操作.然后执行cmd.ExecuteScalar(),而不是cmd.ExecuteNonQuery().这样就实现在同一个SQLiteConnection啦!

 

结束.

 

代码写的比较糙.见谅.

转载于:https://www.cnblogs.com/adinet/archive/2012/08/28/2659479.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值