我正在执行以下代码......
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder querything = new SQLiteQueryBuilder();
String sqlTables = "ZSITESUSES";
String [] sqlSelect = { "ZUSE_ID"};
querything.setTables(sqlTables);
Cursor cursor = querything.query(db, sqlSelect, "ZSITE_ID=1014", null,null, null, null);
DatabaseUtils.dumpCursor(cursor);
cursor.moveToFirst();
在数据库中,如下面的数据库浏览器所示(db viewer有一个小故障,它没有正确显示下划线 - 请忽略):
输出结果为:
>>>>> Dumping cursor android.database.sqlite.SQLiteCursor@41e679b0
0 {
ZUSE_ID=null
}
1 {
ZUSE_ID=null
}
2 {
ZUSE_ID=null
}
<<<<<
我对数据库非常缺乏经验。游标有三个组件的事实看起来是正确的,但“ZUSE_ID = null”对我来说是错误的。如果我执行cursor.getString(0),答案为null,这肯定是错误的。
有什么想法吗?
编辑:关于njzk2的建议我改为使用
String [] sqlSelect = {“ZSITE_ID”,“ZUSE_ID”,“ZUSE_PERCENT”,“ZSITEUSE_ID”};
然后相应的输出是:
>>>>> Dumping cursor android.database.sqlite.SQLiteCursor@41ba4570
0 {
ZSITE_ID=1014
ZUSE_ID=null
ZUSE_PERCENT=10
ZSITEUSE_ID=null
}
1 {
ZSITE_ID=1014
ZUSE_ID=null
ZUSE_PERCENT=30
ZSITEUSE_ID=null
}
2 {
ZSITE_ID=1014
ZUSE_ID=null
ZUSE_PERCENT=70
ZSITEUSE_ID=null
}
<<<<<
编辑:这一切都很奇怪,我决定卸载并重新安装我的应用程序 - 瞧瞧 - 一切都开始完美了...... arrrggghh!
答案 0 :(得分:1)
dumpCursor()
无法打印非字符串列值。 Internally它只是尝试get the column value使用Cursor.getString()
,它可以为非字符串列类型返回null:
结果以及当列值为null或列类型不是字符串类型时此方法是否抛出异常是实现定义的。
解决方案:请勿使用dumpCursor()
,而是根据需要实施自己的日志记录。
答案 1 :(得分:0)
我决定卸载并重新安装我的应用程序 - 瞧瞧 - 一切都开始完美。