尝试在SQLite数据库中重命名元素会使应用程序崩溃

时间:2014-03-03 17:05:10

标签: android 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来查看这些变量是否为null但它们不是(我得到空指针异常)。

这是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)

1 个答案:

答案 0 :(得分:1)

在使用它之前先打开你的数据库,它是空的数据库,而不是字符串 发生: - )