zoukankan      html  css  js  c++  java
  • 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啦!

    结束.

    代码写的比较糙.见谅.

  • 相关阅读:
    Android 70道面试题汇总不再愁面试
    TOMCAT用Https替换Http的方法
    Struts2+Spring3+Hibernate3配置全过程
    javac 无效标签
    hibernate
    数据库命令行启动
    Tomcat检测程序
    SQL
    Unsupported major.minor version 49.0的错误解决
    ImportError: No module named pysqlite2
  • 原文地址:https://www.cnblogs.com/adinet/p/2659479.html
Copyright © 2011-2022 走看看