1
我的應用程序中有一個SQLite數據庫,它包含一些數據。我試圖重命名錶,裏面的東西,這就是我正在努力做到這一點:嘗試重命名SQLite數據庫中的元素數據庫崩潰應用程序
public void renameName(String newName, String oldName){
db.execSQL("UPDATE "+SQLiteHelper.MUSIC_TABLE_NAME+" SET "+SQLiteHelper.MUSIC_NAME+"='"+newName+"' WHERE "+SQLiteHelper.MUSIC_NAME+"='"+oldName+"'");
}
我調用此方法是這樣的:
Log.i("TAG", "Trying to rename "+element.getTitle()+" to "+renameTo);
db.renameName(renameTo, element.getTitle());
我的應用程序崩潰時我打電話這個。正如你所看到的,我調用log.i來查看這些變量是否爲空,但它們不是(我得到空指針異常)。
這裏的logcat的文件:
03-03 17:50:39.329: E/AndroidRuntime(21154): FATAL EXCEPTION: main
03-03 17:50:39.329: E/AndroidRuntime(21154): java.lang.NullPointerException
03-03 17:50:39.329: E/AndroidRuntime(21154): at com.matejhacin.beautifulvoicerecorder.database.DatabaseHandler.renameName(DatabaseHandler.java:63)
03-03 17:50:39.329: E/AndroidRuntime(21154): at com.matejhacin.beautifulvoicerecorder.LibraryFragment$2.onClick(LibraryFragment.java:250)
03-03 17:50:39.329: E/AndroidRuntime(21154): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
03-03 17:50:39.329: E/AndroidRuntime(21154): at android.os.Handler.dispatchMessage(Handler.java:99)
03-03 17:50:39.329: E/AndroidRuntime(21154): at android.os.Looper.loop(Looper.java:137)
03-03 17:50:39.329: E/AndroidRuntime(21154): at android.app.ActivityThread.main(ActivityThread.java:5289)
03-03 17:50:39.329: E/AndroidRuntime(21154): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 17:50:39.329: E/AndroidRuntime(21154): at java.lang.reflect.Method.invoke(Method.java:525)
03-03 17:50:39.329: E/AndroidRuntime(21154): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
03-03 17:50:39.329: E/AndroidRuntime(21154): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
03-03 17:50:39.329: E/AndroidRuntime(21154): at dalvik.system.NativeStart.main(Native Method)
您是否在execSQL之前打開數據庫?我會猜測db是空的,而不是字符串。 – EarlOfEgo
呃我覺得很蠢......我完全忘了打開數據庫。您可以發佈答案,以便我可以接受它:)謝謝! – Guy