我在我的 android 应用程序中创建了数据库表。我使用了这个查询:
CREATE TABLE foo (_id INTEGER PRIMARY KEY AUTOINCREMENT, mybool BOOLEAN)
比我在表中添加的行,值mybool
将是true
.
我运行 sqlite3 命令查看表中的值,我看到:
_id | mybool
----------------------
1 | 1
没错,true
值变成了 1。
奇怪的是在阅读中。我是这样读表的:
ContentValues values = new ContentValues();
Cursor cursor = db.rawQuery("SELECT * FROM foo", null);
DatabaseUtils.cursorRowToContentValues(cursor, values);
然后我得到奇怪的结果:
values.getAsBoolean("mybool"); // return false - WRONG
values.getAsInteger("mybool"); // return 1 = true - CORRECT
我使用这样的代码来获取布尔值:
values.getAsInteger("mybool") != 0;
但这很奇怪。
为什么我总是false
在getAsBoolean
函数中?课堂上是否有任何错误ContentValues
?还有其他人有这个问题吗?