2017-08-11 3 views
0

Irgendwie fügt der Code einfach nicht die Daten ein. selbst wenn ich die Daten fest in die Inhaltswerte einprogrammiere.SQLite Einfügen funktioniert nicht

public void addEvent(String username, String itemName, String price, String imageId, String eventType) { 

     SQLiteDatabase db = this.getWritableDatabase(); 

      ContentValues values = new ContentValues(); 
      values.put(EVENT_USERNAME, username); 
      values.put(EVENT_ITEM_NAME, itemName); 
      values.put(EVENT_ITEM_PRICE, price); 
      values.put(EVENT_ITEM_IMAGE, imageId); 
      values.put(EVENT_EVENT_TYPE, eventType); 

      long result; 
      result = db.insert(TABLE_EVENT, null, values); 

      Toast.makeText(context, "RESULT = " + result, Toast.LENGTH_SHORT).show(); 

     db.close(); 
    } 

Das Ergebnis gibt immer -1 zurück.

es ist nicht von meiner Datenquelle, wie ich Togetted es mehrere und sogar hardcoded nur zu überprüfen und es tut noch nicht. meine Definitionen

here

//table name 
private static final String TABLE_USERS = "table_users"; 
private static final String TABLE_EVENT = "table_event" 
//table_event columns 
private static final String EVENT_ID = "id"; 
private static final String EVENT_USERNAME = "username"; 
private static final String EVENT_ITEM_NAME = "item_name"; 
private static final String EVENT_ITEM_PRICE = "item_price"; 
private static final String EVENT_ITEM_IMAGE = "item_image_id"; 
private static final String EVENT_EVENT_TYPE = "event_type"; 


private static final String CREATE_TABLE_EVENT = "CREATE TABLE " + TABLE_EVENT 
     + " (" + EVENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + EVENT_USERNAME + " VARCHAR, " + EVENT_ITEM_NAME + " VARCHAR, " + EVENT_ITEM_PRICE + " VARCHAR, " 
     + EVENT_ITEM_IMAGE + " VARCHAR" + EVENT_EVENT_TYPE + " VARCHAR)"; 

die Benutzer-Tabelle perfekt funktioniert. Dank für Ihre Zeit

+1

Sie ein Komma in 'CREATE_TABLE_EVENT' fehlt -' ... "VARCHAR" + EVENT_EVENT_TYPE ... '. Repariere das und deinstalliere und installiere deine App neu. –

+1

Sie haben ein "," nach + EVENT_ITEM_IMAGE + "VARCHAR" verpasst. prüfen Sie. Verwenden Sie auch Stetho oder einen anderen Mechanismus zum Debuggen und sehen Sie die Tabelle erfolgreich erstellt oder nicht – Aveek

+0

Okay danke, das war mein Fehler, ich habe EVENT_ITEM_IMAGE spät hinzugefügt, und es war eine Kopie und Einfügen-Aktion. @Aveek Wie kann ich den Stetho bekommen und wie funktioniert es – Light

Antwort

0

Laut Android API

Returns sehne die Zeile ID der neu eingefügten Zeile oder -1, wenn ein Fehler

Vielleicht sind Sie mehr für das Debuggen protokolliert aufgetreten sagen .

-1

Es gibt ein Semikolon, das am Ende der Anweisung zum Erstellen einer Tabellenanweisung fehlt. Versuchen:

/*...*/ EVENT_EVENT_TYPE + " VARCHAR);"; 
+2

Das ist falsch; [SQL-Anweisungen] (http://www.sqlite.org/syntax/sql-stmt-list.html) erfordern nur dann ein Trennzeichen, wenn mehrere Anweisungen verwendet werden, was sowieso nicht von 'execSQL' unterstützt wird. –

+0

@CL Meinst du Trennzeichen oder Ende der Anweisung Semikolon – Light

+0

@Light Es ist egal, wie Sie es nennen möchten. Siehe die Dokumentation, mit der ich verlinkt bin. –