如何在SQLite中获取最后一个插入Id


How to get last insert Id in SQLite?

SQLite中是否有任何内置函数可用于获取最后插入的行id。例如:-在mysql中,我们有LAST_INSERT_ID()这类函数。对于sqllite,任何可用于执行相同过程的函数。

请帮帮我。

感谢

SQLite

这可以使用SQLite last_insert_rowid()函数:

last_insert_rowid()函数返回最后一行的rowid从调用该函数的数据库连接插入。这个last_insert_rowid()SQL函数是围绕sqlite3_last_insert_rowid()C/C++接口函数。

PHP

此函数的PHP版本/绑定为sqlite_last_insert_rowid():

返回最近插入到数据库dbhandle,如果它是作为自动增量字段创建的。

当将SQLite版本3与PDO SQLite一起使用时,它可以是这样的:

$insert = "INSERT INTO `module` (`mid`,`description`) VALUES (
            NULL,
            :text
            );
        ";
$stmt = $conn->prepare($insert);
$stmt->execute(array(':text'=> $text));
echo $conn->lastInsertId()

它有last_insert_rowid()

last_insert_rowid()函数返回最后一行的rowid从调用功能的数据库连接插入

sqlite_last_insert_rowid(资源$dbhandle)

这是一个适用于我的简短C#方法。Int32对于我来说足够大了。

public static Int32 GetNextID( SqliteConnection AConnection )
{
  Int32 result = -1;
  using ( SqliteCommand cmd = AConnection.CreateCommand() )
  {
    cmd.CommandText = "SELECT last_insert_rowid();";
    using ( SqliteDataReader r = cmd.ExecuteReader() )
    {
      if ( r.Read() )
        result = (Int32) r.GetInt64( 0 );
    }
  }
  return result;
}

我是SQLite的新手,这个线程很旧,所以我认为它可能需要更新,因为我觉得有一种更简单、更短的方法可以获得最后插入行的"id"。我使用了->querySingle()而不是->exec(),并将其包含在SQL语句returning id的末尾。

我觉得这可能更可靠,线程更安全,因为它是实际插入语句的结果。也许对资源进行更轻松的处理。

    $id = $db->querySingle("insert into names (first, last) values ('john', 'do') returning id;");