我的 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;
}
为什么第一次没有正确返回条目?