android SQLite中的ROWID是自动设置的吗?

zpgglvta  于 2023-01-24  发布在  Android
关注(0)|答案(2)|浏览(134)

我在Ionic上有一个应用程序,它使用SQLite ngCordova plugin作为内部存储器,我用下面的命令创建了一个表:

db.executeSql(
    "CREATE TABLE IF NOT EXISTS Scans_table (" +
      //"id         TEXT PRIMARY KEY  NOT NULL," +
      "name       TEXT              NOT NULL," +
      "comment    TEXT, " +
      "text       TEXT              NOT NULL, " +
      "format     TEXT              NOT NULL, " +
      "dateTaken  TEXT              NOT NULL, " +
      "imgSource  TEXT              NOT NULL)", ... );

据此,如果我没有一个列是主键和整数,则应该将ROWID设置为唯一标识符。
问题是,当我使用简单的SELECT * ...查询表时,我看到了我设置的所有行,而不是ROWID。
是否有其他方法来设置/检查ROWID?

brvekthn

brvekthn1#

如文档中所示,表 * 确实 * 有一个内部rowid列。但是,如果表的列列表不包含此列的别名(即INTEGER PRIMARY KEY列),则rowid列不包含在SELECT *中。
您可以只在SELECT子句中添加列:

SELECT rowid, * FROM Scans_table ...

但是,如果实际使用rowid,则最好使用显式INTEGER PRIMARY KEY列,这样不仅可以更好地记录表结构,还可以防止rowid值变为changed by the VACUUM statement

dfuffjeb

dfuffjeb2#

在SqliteStudio 3.4.3中,将()放在行ID周围:“select(rowid),* from阿索”注意使用Sqlite3的Python代码不需要()。

相关问题