Datenbank update endet mit einem java.lang.nullpointerexception

  • Antworten:13
  • OffenNicht stickyNicht beantwortet
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Forum-Beiträge: 3.112

26.07.2014, 20:31:35 via Website

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

Antworten
  • 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
  • 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
  • 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
  • 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
  • Forum-Beiträge: 11.137

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