SQLite在android中启动活动时未加载数据
问题:该用户与其他用户匹配,游戏开始。给用户一些单词,这些单词取自SQLite数据库。问题是,当活动开始时,单词应该出现的区域是空的。日志中没有显示任何错误。这是相关代码 保存所有单词的数据库类:SQLite在android中启动活动时未加载数据,android,sqlite,Android,Sqlite,问题:该用户与其他用户匹配,游戏开始。给用户一些单词,这些单词取自SQLite数据库。问题是,当活动开始时,单词应该出现的区域是空的。日志中没有显示任何错误。这是相关代码 保存所有单词的数据库类: public class WordsListDatabaseHelper extends SQLiteOpenHelper { protected static Set<String> mSelectedWords; private static final String DB_NAME
public class WordsListDatabaseHelper extends SQLiteOpenHelper {
protected static Set<String> mSelectedWords;
private static final String DB_NAME = "GAME_TABLE";
private static final int DB_VERSION = 1;
protected static LinkedList<String> mCopy;
public static int gameNumber = 0;
WordsListDatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE GAME ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "SELECTED_WORDS TEXT, "
+ "GAME_NUMBER INTEGER);"
);
Collection<String> wordList = new LinkedList<String>();
mSelectedWords = new LinkedHashSet<String>();
wordList.add("ant");
wordList.add("almond");
//lots more words
mCopy = new LinkedList<String>(wordList);
Gson gson = new Gson();
String wordsContainer = gson.toJson(mCopy);
insertWordList(db, wordsContainer, gameNumber);
}
private static void insertWordList(SQLiteDatabase db, String wordsContainer, int gameNumber) {
ContentValues wordValues = new ContentValues();
Gson gson = new Gson();
Collections.shuffle(mCopy);
mSelectedWords.addAll(mCopy.subList(1,7));
wordsContainer = gson.toJson(mSelectedWords);
wordValues.put("SELECTED_WORDS", wordsContainer);
wordValues.put("GAME_NUMBER", gameNumber);
db.insert("GAME", null, wordValues);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
现在,这是StartGrameActivity的onCreate方法中的代码:
Intent intent = getIntent();
mGameNum = intent.getIntExtra(EXTRA_GAME_NUMBER, 0);
//create a cursor
try {
SQLiteOpenHelper wordsListDatabaseHelper = new WordsListDatabaseHelper(this);
SQLiteDatabase db = wordsListDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query("GAME",
new String[] {"SELECTED_WORDS"},
"GAME_NUMBER =? ",
new String[]{Integer.toString(mGameNum)},
null, null, null);
//move to the first record in the Cursor
if (cursor.moveToFirst()) {
//get wordList
String savedWordList = cursor.getString(0);
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<String>>() {}.getType();
ArrayList<String> finalWordList = gson.fromJson(savedWordList, type);
mCopy = new LinkedList<String>();
mCopy.addAll(finalWordList);
word1 = (TextView) findViewById(R.id.word1);
word1.setText(mCopy.get(1));
word2 = (TextView) findViewById(R.id.word2);
word2.setText(mCopy.get(2));
我一遍又一遍地检查这个问题,但我找不到哪里出了问题。这个问题已经解决了;我重新安装了应用程序,清理了项目并将其与gradle同步。这些都不是应用程序中的日志。你是什么意思?我从logcat中得到消息。消息是关于mmsconfig的。您正在使用名为mmsconfig的表吗?另外,您简短发布的其他消息提到了来自google apps和providersRight的软件包名称,我意识到这些名称是不必要的,因为它们的出现与我的一些其他活动一致。感谢您的帮助,我刚刚注意到我的应用程序名丢失了,所以应该提醒一下。有一件事下次可能会有所帮助:每当您修改db时,不要忘了修改db_版本号,因为它会触发对onUpgrade的调用
Intent intent = getIntent();
mGameNum = intent.getIntExtra(EXTRA_GAME_NUMBER, 0);
//create a cursor
try {
SQLiteOpenHelper wordsListDatabaseHelper = new WordsListDatabaseHelper(this);
SQLiteDatabase db = wordsListDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query("GAME",
new String[] {"SELECTED_WORDS"},
"GAME_NUMBER =? ",
new String[]{Integer.toString(mGameNum)},
null, null, null);
//move to the first record in the Cursor
if (cursor.moveToFirst()) {
//get wordList
String savedWordList = cursor.getString(0);
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<String>>() {}.getType();
ArrayList<String> finalWordList = gson.fromJson(savedWordList, type);
mCopy = new LinkedList<String>();
mCopy.addAll(finalWordList);
word1 = (TextView) findViewById(R.id.word1);
word1.setText(mCopy.get(1));
word2 = (TextView) findViewById(R.id.word2);
word2.setText(mCopy.get(2));
09-29 13:48:42.572 13689-13720/? E/SQLiteLog﹕ (1) no such table: mmsconfig