碰撞報告中出現錯誤android.database.sqlite.SQLiteException
。但是我的應用程序通過自己的電話和模擬器正常工作。Android SQLiteException崩潰
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2319)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2379)
at android.app.ActivityThread.access$800 (ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1284)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:135)
at android.app.ActivityThread.main (ActivityThread.java:5257)
at java.lang.reflect.Method.invoke (Method.java)
at java.lang.reflect.Method.invoke (Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:694)
Caused by: android.database.sqlite.SQLiteException:
at android.database.sqlite.SQLiteConnection.nativePrepareStatement (SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init> (SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init> (SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:1676)
at android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1607)
at DictionaryDB2.addBook (DictionaryDB2.java)
at <OR>.getBookmarkedWords (DictionaryDB2.java)
at <OR>.deleteEntry (DictionaryDB2.java)
at <OR>.addHistory (DictionaryDB2.java)
at Word.onCreate (Word.java)
at android.app.Activity.performCreate (Activity.java:6018)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2272)
數據庫初始化:
public class DatabaseInitializer2 extends SQLiteOpenHelper {
private static String DB_NAME = "bookmark";
private static final int DB_VERSION = 59;
private static final String TAG = DatabaseInitializer2.class.getName();
public DatabaseInitializer2(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_BOOK_TABLE = "CREATE TABLE IF NOT EXISTS bookmark (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"en_word TEXT, "+
"bn_word TEXT, "+
"status TEXT, "+
"user_created TEXT)";
String CREATE_HISTORY_TABLE = "CREATE TABLE history (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"en_word TEXT, "+
"bn_word TEXT, "+
"status TEXT, "+
"user_created TEXT, "+
"UNIQUE (en_word) ON CONFLICT REPLACE)";
db.execSQL(CREATE_BOOK_TABLE);
db.execSQL(CREATE_HISTORY_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
this.onCreate(db);
}
}
這是DictionaryDB2.addBook方法:
public void addBook(String englishWord, String banglaWord) {
SQLiteDatabase db = initializer.getWritableDatabase();
String sql = "INSERT INTO " + BOOK_NAME + " (" + ENGLISH +
", " + BANGLA + ") VALUES ('" + englishWord +
"', '" + banglaWord + "') ";
db.execSQL(sql);
}
這是我getBookmarkedWords:
public List<Bean> getBookmarkedWords() {
SQLiteDatabase db = initializer.getReadableDatabase();
String sql = "SELECT * FROM " + BOOK_NAME + " ORDER BY " + ID + " DESC ";
Cursor cursor = db.rawQuery(sql, null);
List<Bean> wordList = new ArrayList<Bean>();
while(cursor.moveToNext()) {
int id = cursor.getInt(0);
String english = cursor.getString(1);
String bangla = cursor.getString(2);
String status = cursor.getString(3);
wordList.add(new Bean(id, english, bangla, status));
}
cursor.close();
db.close();
return wordList;
}
#2不允許我添加更多的代碼。任何人都知道我的代碼中出了什麼問題?
發佈完整的錯誤 –
發表完整的崩潰報告。 Stackoverflow不允許我以前點。 – user2872856
你是什麼意思,不允許我添加更多的代碼? –