Datenbank update endet mit einem java.lang.nullpointerexception

  • Antworten:13
baune
  • Forum-Beiträge: 5

26.07.2014, 14:43:47 via Website

Kann mir jemand beantworten wieso diese anweisungen in einem absturz enden?

public void updateScoutlog(long id,String title,String content,String image){

    ContentValues values = new ContentValues();
    values.put(DbHelper.COLUMN_TITLE, title);
    values.put(DbHelper.COLUMN_CONTENT, content);
    values.put(DbHelper.COLUMN_IMAGE, image);

    Log.d("SCOUTLOGTitle", title);
    Log.d("SCOUTLOGContent", content);
    Log.d("SCOUTLOGImage", image);
    Log.d("SCOUTLOGId", String.valueOf(id));


  database.update(DbHelper.TABLE, values, DbHelper.COLUMN_ID + "=" + id, null);

}

Antworten
Michele
  • Forum-Beiträge: 1.525

26.07.2014, 15:20:45 via Website

Hallo.

Was sagt denn deine LogCat genau?
Wäre gut, wenn du sie zeigst.
Welcher Wert ist oder soll "nullpointerexception" sein?

LG

— geändert am 26.07.2014, 15:27:22

Antworten
baune
  • Forum-Beiträge: 5

26.07.2014, 15:36:02 via Website

Der Logcat spuckt das aus:

07-26 15:32:16.900 21448-21448/de.baitservice.scouttools E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at de.baitservice.scouttools.DataSource.updateScoutlog(DataSource.java:76)
at de.baitservice.scouttools.ScoutLogDetailsFragment.saveDetails(ScoutLogDetailsFragment.java:121)
at de.baitservice.scouttools.ScoutLogDetailsFragment.onOptionsItemSelected(ScoutLogDetailsFragment.java:115)
at android.app.Fragment.performOptionsItemSelected(Fragment.java:1805)
at android.app.FragmentManagerImpl.dispatchOptionsItemSelected(FragmentManager.java:1979)
at android.app.Activity.onMenuItemSelected(Activity.java:2643)
at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1171)
at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:630)
at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:200)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)

Antworten
Andy N.
  • Forum-Beiträge: 3.112

26.07.2014, 16:01:06 via App

Du kannst ja mal an der Stelle einen Breakpoint setzen, dann dort du schnell sehen, welches Object null ist.

Antworten
baune
  • Forum-Beiträge: 5

26.07.2014, 16:33:48 via Website

Ich gib die werte ja auch einzeln im logcat aus dort steht überall was drin.

Antworten
Sven R.
  • Forum-Beiträge: 1.904

26.07.2014, 18:26:46 via App

Welche Zeile ist denn Zeile 76?

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
baune
  • Forum-Beiträge: 5

26.07.2014, 18:31:33 via Website

Database.update........

die werte sind alle gefühlt. Der datensatz existiert in der datenbank.

Antworten
Michele
  • Forum-Beiträge: 1.525

26.07.2014, 18:54:18 via Website

Am besten du zeigst bisschen mehr vom Code.

LG

— geändert am 26.07.2014, 18:57:52

Antworten
Andy N.
  • Forum-Beiträge: 3.112

26.07.2014, 20:31:35 via Website

Hast Du überprüft, ob es das Object database gibt?

Antworten
Sven R.
  • Forum-Beiträge: 1.904

26.07.2014, 22:08:39 via App

Meiner Meinung nach, müsste das das Problem sein(database == null), weil es sonst einen anderen Fehler seitens sqlite geben müsste.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Georg C.
  • Forum-Beiträge: 235

27.07.2014, 01:42:34 via Website

Hallo,

könnte sein, dass ich das "Falsch sehe" aber:
Du "futterst" den DbHelper mit:
COLUMN_TITLE
COLUMN_CONTENT
COLUMN_IMAGE
COLUMN_ID <--- FEHLT!
und dann versuchst du die ID zu überschreiben.

Ich vermute, dass dein:

DbHelper.COLUMN_ID

Parameter der update Methode einfach null ist.

also:

values.put(DbHelper.COLUMN_ID, id);

LG
Georg

Sorry für Gramatik & Stilistik Fehler.

Antworten
Sven R.
  • Forum-Beiträge: 1.904

27.07.2014, 11:33:23 via App

Nein, es wird der Datensatz mit der id, die angegeben ist, geupdatet.
Und die id hat er vielleicht gar nicht selber festgelegt, weil die id AUTOINCREMENT ist.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
baune
  • Forum-Beiträge: 5

07.08.2014, 17:24:15 via Website

Wenn ich das richtig aus den logs sehe ist database == null aber wieso ist das so?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.08.2014, 18:56:36 via App

Können wir dir nicht sagen ohne deinen Codes zu kennen...

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten