Cordova/SQLite:rowid 未定义
Cordova / SQLite: rowid undefined
在 Android 设备上使用 SQLite 和 Cordova。
我有一个包含 table 和一些字段的数据库。
None 字段是主键,因此记录具有 SQLite 生成的默认 rowid
。
这是 Chrome 调试器中 table 的屏幕截图:
我正在尝试访问那个 rowid
(我为您省去了所有数据库代码并专注于查询):
tx.executeSql('SELECT * FROM ServicesRondes', [], function(tx, res) {
console.log(res.rows.length); // shows 5
if (res.rows.length > 0) {
for(var i = 0; i < res.rows.length; i++) {
console.log(res.rows.item(i).time); // shows the time record
console.log(res.rows.item(i).rowid); // shows undefined
}
}
}
所以问题是 rowid
在日志中是 undefined
。
我发现只有一个 link 有一个人回答了他自己的问题:https://forum.qt.io/topic/53217/solved-how-to-access-sqlite-rowid
如您所见,他用 rowid
进行了查询以解决他的问题。
但这并不是我真正想要的(我想要 select 全部)而且,我不明白为什么它以这种方式而不是另一种方式工作。
当然我可以创建自己的自动增量主键字段,但我想避免它,这不是我的问题。
SELECT *
returns 您在 table 定义中声明的所有列。
如果您希望 rowid
列与 *
一起显示,您必须将其包含在此处:
CREATE TABLE ServicesRondes (
rowid INTEGER PRIMARY KEY,
userUuid UUID,
secteurId UUID,
time TIMESTAMP,
[...]
);
在 Android 设备上使用 SQLite 和 Cordova。
我有一个包含 table 和一些字段的数据库。
None 字段是主键,因此记录具有 SQLite 生成的默认 rowid
。
这是 Chrome 调试器中 table 的屏幕截图:
我正在尝试访问那个 rowid
(我为您省去了所有数据库代码并专注于查询):
tx.executeSql('SELECT * FROM ServicesRondes', [], function(tx, res) {
console.log(res.rows.length); // shows 5
if (res.rows.length > 0) {
for(var i = 0; i < res.rows.length; i++) {
console.log(res.rows.item(i).time); // shows the time record
console.log(res.rows.item(i).rowid); // shows undefined
}
}
}
所以问题是 rowid
在日志中是 undefined
。
我发现只有一个 link 有一个人回答了他自己的问题:https://forum.qt.io/topic/53217/solved-how-to-access-sqlite-rowid
如您所见,他用 rowid
进行了查询以解决他的问题。
但这并不是我真正想要的(我想要 select 全部)而且,我不明白为什么它以这种方式而不是另一种方式工作。
当然我可以创建自己的自动增量主键字段,但我想避免它,这不是我的问题。
SELECT *
returns 您在 table 定义中声明的所有列。
如果您希望 rowid
列与 *
一起显示,您必须将其包含在此处:
CREATE TABLE ServicesRondes (
rowid INTEGER PRIMARY KEY,
userUuid UUID,
secteurId UUID,
time TIMESTAMP,
[...]
);