2017-04-04 6 views
-2

Ich habe ein Tutorial online verfolgt, um eine Datenbank in meinem Android Studio Application Project zu implementieren. Allerdings habe ich den gleichen Code verwendet, aber halten den gleichen Fehler ein Lauf den Emulator unter jedes Mal bekommen und versuchen, eine meiner Datensätze zu aktualisieren: Unfortunetly DAS PROJEKT LÄUFT HAT STOPPENAndroid Studio Fehler beim Versuch, meine SQLite-Datenbank UPDATE

ich meine logcat und folgendes erscheint überprüft haben :

Beginn des Crash-04-04 20: 25: 23,290 4.019-4.019/com.example.mark.messaround2 E/Android Runtime: fatal EXCEPTION: main Prozess: com.example.mark.messaround2, PID: 4019 android.database.sqlite.SQLiteException: keine solche Spalte: ID (Code 1): , beim Kompilieren: UPDATE DAY_TABLE SET NAME =?, ID = ?, MARKS =?, SURNAME =? WHERE ID =? bei android.database.sqlite.SQLiteConnection.nativePrepareStatement (Mutter Method) bei android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:889) bei android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection .java-: 500) bei android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588) bei android.database.sqlite.SQLiteProgram (SQLiteProgram.java:58) bei android.database.sqlite.. SQLiteStatement. (SQLiteStatement.java:31) bei android.database.sqlite.SQLiteDatabase.updateWithOnConflict (SQLiteDatabase.java:1577) bei android.database.sqlite.SQLiteDatabase.update (SQLiteDatabase.java:1525) bei com.example.mark.AutismApplicationSuite.DatabaseHelper. update (DatabaseHelper.java:75) bei com.example.mark.AutismApplicationSuite.ChooseDayScreen $ 9.onClick (ChooseDayScreen.java:152) bei android.view.View.performClick (View.java:5610) bei android. view.View $ PerformClick.run (View.java:22265) bei android.os.Handler.handleCallback (Handler.java:751) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:154) bei android.app.ActivityThread.main (ActivityThread.java:6077) bei java.lang.reflect.Method.invoke (Native Methode) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:865) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755)

+0

Bitte schreiben Sie den Code aus Ihrer SQLiteOpenHelper-Klasse – Jahnold

+0

Lassen Sie mich es nicht posten ... nicht verstehen, den Einzug, den Sie tun müssen .... wie ich es eingerückt haben VIER SPACES aber lassen Sie mich nicht –

+0

@MarkWilliamson https: // meta.stackexchange.com/help/formatting –

Antwort

0

Überprüfen Sie diese beiden, jeder von ihnen kann für Sie arbeiten.

  1. In "DAY_TABLE" haben Sie kein Attribut für "ID" gemacht. Also machen Sie ein Attribut mit dem Namen "ID" und aktualisieren Sie die Version des DB
  2. Sie haben die DB-Version nicht aktualisiert, nachdem Sie "DAY_TABLE" geändert haben.
-1

gibt es weder Quellcode noch den kompletten Stack-Trace ... während der meisten wahrscheinlich, es ist keine passendes String [] als zweite Parameter innerhalb dieser Helper-Klasse übergeben werden, wenn die SQL-Anweisung zur Ausführung vorbereitet. Bitte bestätigen Sie das einmal, wenn es nicht hilft - einfach Ihren Code in einem Editor (und nicht in einem Browser) neu einrücken und es posten, insbesondere die Funktion, die diese Abfrage durchführt ... überprüfen Sie auch Ihre Abfrage, daher das Feld ID zweimal übergeben wird ... gleich SQLite gewöhnliche Arbeiten Aktualisierung:

/* set up ContentValues */ 
ContentValues values = new ContentValues(); 
values.put(KEY_USER_FIRSTNAME, firstname); 
values.put(KEY_USER_SURNAME, surname); 
values.put(KEY_USER_MARKS,  marks); 

/* run SQL Transaction */ 
try { 
    db.beginTransaction(); 
    db.update(TABLE_USERS, values, KEY_USER_ID + " = ?", new String[] {String.valueOf(userId)}); 
    db.setTransactionSuccessful(); 
} catch (Exception e) { 
    Log.w(LOG_TAG, e.getMessage(), e); 
} finally { 
    Log.d(LOG_TAG, "userId " + String.valueOf(userId) + " has been updated."); 
    db.endTransaction(); 
} 

die Fehlermeldung auch eindeutig fest:

keine solche Spalte: ID

während es eher unüblich ist, haben alle Spaltennamen ase (nur die Konstanten, die diese Strings repräsentieren, wie die KEY_USER_ID könnten einen String-Wert von user_id haben) ... siehe auch die docs, _id ist wahrscheinlich der Standard-Deskriptor für die Spalte "ID".

+0

danke für die down-voting eine richtige antwort - ohne in der lage zu sagen, warum. pfff. –

Verwandte Themen