我的SQLite数据库存在问题。我使用以下命令将新条目存储到数据库中:
public Long createTest(String name, String lang)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TEST_NAME, name);
initialValues.put(KEY_TEST_LANGUAGE, lang);
initialValues.put(KEY_TEST_TRIED, 0);
initialValues.put(KEY_TEST_CORRECT, 0);
return mDb.insert(DB_TABLE_TEST, null, initialValues);
}
但是当我尝试从数据库中获取新的“测试”时,我什么都没得到。
我的调试代码:
long id = mDbHelper.createTest(name, lang);
if(id > 0)
mId = id; //A new id is returned!!
Cursor testInfo = mDbHelper.getTestInfo(mId);
startManagingCursor(testInfo);
String lang_output = testInfo.getString(testInfo.getColumnIndexOrThrow(DbAdapter.KEY_TEST_LANGUAGE));
Log.i("AddTestDebug", "lang_output = " + lang_output); //lang_output is null
createTest()
会返回一个新ID。但lang_output
为null
。
奇怪的是,在我的下一个活动中,我调用完全相同的方法(getTestInfo(mId)
),并将lang_output
调整为正确的值。
如果我对先前保存的id进行硬编码,我也会得到正确的值。 (getTestInfo(26)
)。之前的ID始终有效..
我的getTestInfo
是
public Cursor getTestInfo(long id) throws SQLException {
Cursor mCursor = mDb.rawQuery("SELECT test.name, test.lang, COUNT(words._id) AS num "
+ "FROM words, test "
+ "WHERE test._id = " + id + " "
+ "AND test._id = words.test_id", null);
if(mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
为什么第一次没有正确返回条目?