我为Android应用创建了一个SQLite数据库和表。可以插入值并返回long id而没有任何问题。当返回的id用于检索其他字段时,getColumnIndex(COLUMN_NAME)返回正确的索引,但是当使用getSting和getInt获取字段的值时,应用程序崩溃。 Android工作室没有任何错误。请帮忙。
数据库处理程序类:
switch-case
答案 0 :(得分:1)
在查询游标的第一行之前,必须使用cursor.moveToFirst()。将您的if语句更改为:
if (cursor != null && cursor.moveToFirst()) {
此外,即使没有结果,也必须关闭光标。我建议像这样写:
try {
if (cursor != null && cursor.moveToFirst) {
//for testing getInt
int id = cursor.getInt(cursor.getColumnIndex(BABIES_BABY_ID));
String name = cursor.getString(cursor.getColumnIndex(BABIES_NAME));
}
}
finally {
if(cursor != null) {
cursor.close();
}
}
这样无论发生什么异常,光标都会正确关闭。
答案 1 :(得分:0)
我认为你的光标不是数据。
mismatched types: expected struct `std::string::String`, found str
例如:
Cursor cursor = db.query(TBL_BABIES,
null, //This must not null. In here your columns in string array
BABIES_BABY_ID + " = " + id,
null, null, null, null);
在某些情况下,您需要在Cursor cursor = db.query(TBL_BABIES,
new String[]{BABIES_BABY_ID, BABIES_NAME}, //What column you need
BABIES_BABY_ID + " = " + id,
null, null, null, null);
条件
if