Datenbank SQLite , db.insert Problem Result = -1

  • Hallo
    ich hab da ein komisches Problem und weis nicht was da falsch läuft.
    result läuft bei mir immer auf -1 wenn ich alle COL* in die db übertragen möchte.
    Nur bis "COL19" (Rest auf Comment) funktioniert alles Perfekt. Ab COL20 geht result auf -1.
    Es liegt nicht am Inhalt von COL20 - Trajectory1. Ich hab da schon einiges rumprobiert, aber immer ab COL20 result = -1
    Wie krieg ich den Raus warum er den Wert -1 bekommt bzw. was läuft denn da verkehrt.
    Das bei den Integer Daten alles auf "0" bzw. String "" (COL 18,19) steht ist auf jeden Fall schon mal nicht der Grund:
    Gruß

    Code
    long result = db.insert(TABLE_NAME,null,contentValues);
            if (result == -1)



  • Hier bitte Schön, aber die Tabelle selbst bildet ja den String ab, Die tabelle wird ja aus dem String erzeugt, deswegen dachte ich da ist es besser zu sehen.
    hier der String + zusaätzliche Zeilen

  • Hi
    also das war es auch nicht. Ich hab mal überall zu jeder Zeile den Text oder Integer direkt so wie du vorgeschlagen hast eingegeben.
    Das hat auch nicht funktioniert.
    Ich glaube das es nicht an den Inhalt ankommt, sondern genau ab dieser Zeile die Datenbank oder was auch immer Probleme macht.
    Also COL20. Ich hab auch alles geändert, damit anstatt ein text ein Integer in der Zeile 20 steht. Das ist auch egal.
    Ich krieg ja leider vom System auch keine Meldung was das Problem ist nur der Returnwert = -1;
    Was für Möglichkeiten hab ich denn noch den Fehler zu finden ?
    Gibt es irgendwo einen Counter der die maximale Anzahl derColums festlegt ?


    Gruß

  • Schreibt man das dann so ?

    Code
    contentValues.put(COL17,2);
    contentValues.put(COL18,1);
    contentValues.put("DESCRIPTION","WAS");
    contentValues.put("SHORTDESCRIPTION","WO");


    und der Text muss identisch sein zu der static definition ?

    Code
    public static final String COL16 = "BALLSHOTLISTTABLE6PLAYERA"; //Spinner
    public static final String COL17 = "BALLSHOTLISTTABLE6PLAYERB"; //Spinner
    public static final String COL18 = "TRAJECTORYTABLE1"; //Seekbar
    public static final String COL19 = "DESCRIPTION"; // Textbox
    public static final String COL20 = "SHORTDESCRIPTION"; // Textbox

    Wenn das so stimmt, dann hat es auch nicht geholfen

  • Also das mit COL Änderung kommt daher weil ich was getestet habe.
    Also dann hab ich das mit dem Text richtig gemacht. Leider hat es aber nicht geholfen.
    Der Einzige nachteil bei Eingabe des Textes "DESCRIPTION" ist , das mir das System dabei keinen Vorschlag macht. Tippe ich COL ein , dann schlägt Android Studio alle anderen COL automatisch vor.


    Oder meinst du auch noch, das ich die Zeile bei der Definition
    public .... COL2 = "LEFTHANDPLAYER" auch in LEFTHANDPLAYER = "LEFTHANDPLAYER" umändern soll.
    Ich dachte COL1,COL2 usw. nimmt man immer her.?


    (wird warschienlich aber nicht die Lösung von meinem Problem sein)


    Code
    public static final String DATABASE_NAME = "database.db";
        public static final String TABLE_NAME = "database_table";
        public static final String COL1 = "_ID";
        public static final String COL2 = "LEFTHANDPLAYERA"; //Button
        public static final String COL3 = "LEFTHANDPLAYERB"; //Button
        public static final String COL4 = "FILTER1"; //Spinner
        public static final String COL5 = "FILTER2"; //Spinner
  • prüfe mal dein contentValues Objekt im Debuger ob die werte auch richtig mit Put zugeordnet werden vor allen der Daten Typ.
    Wie ist das wenn du die Zeilen mit dem DatenTyp Text nicht zum contentValues hinzufügst alle anderren ja dann geht es. Habe ich das Richtig verstanden

  • Deine Konstanten


    public static final String COL20 = "TRAJECTORYTABLE1"; //Seekbar
    public static final String COL21 = "SIDESPINTABLE1"; //Seekbar
    public static final String COL22 = "SPEEDTABLE1"; //Seekbar
    public static final String COL23 = "BACKSPINTOPTABLE1"; //Seekbar
    public static final String COL24 = "TRAJECTORYTABLE2"; //Seekbar
    public static final String COL25 = "SIDESPINTABLE2"; //Seekbar
    public static final String COL26 = "SPEEDTABLE2"; //Seekbar
    public static final String COL27 = "BACKSPINTOPTABLE2"; //Seekbar
    public static final String COL28 = "TRAJECTORYTABLE3"; //Seekbar
    public static final String COL29 = "SIDESPINTABLE3"; //Seekbar
    public static final String COL30 = "SPEEDTABLE3"; //Seekbar
    public static final String COL31 = "BACKSPINTOPTABLE3"; //Seekbar
    public static final String COL32 = "TRAJECTORYTABLE4"; //Seekbar
    public static final String COL33 = "SIDESPINTABLE4"; //Seekbar
    public static final String COL34 = "SPEEDTABLE4"; //Seekbar
    public static final String COL35 = "BACKSPINTOPTABLE4"; //Seekbar
    public static final String COL36 = "TRAJECTORYTABLE5"; //Seekbar
    public static final String COL37 = "SIDESPINTABLE5"; //Seekbar
    public static final String COL38 = "SPEEDTABLE5"; //Seekbar
    public static final String COL39 = "BACKSPINTOPTABLE5"; //Seekbar
    public static final String COL40 = "TRAJECTORYTABLE6"; //Seekbar
    public static final String COL41 = "SIDESPINTABLE6"; //Seekbar
    public static final String COL42 = "SPEEDTABLE6"; //Seekbar
    public static final String COL43 = "BACKSPINTOPTABLE6"; //Seekbar
    public static final String COL44 = "SHOTHEIGHT"; //Spinnner


    deine Tabelle



    sb.append("TRAJECTORY1 INTEGER, SIDESPIN1 INTEGER, SPEED1 INTEGER, BACKSPINTOP1 INTEGER, TRAJECTORY2 INTEGER, SIDESPIN2 INTEGER, SPEED2 INTEGER, BACKSPINTOP2 INTEGER, ");
    sb.append("TRAJECTORY3 INTEGER, SIDESPIN3 INTEGER, SPEED3 INTEGER, BACKSPINTOP3 INTEGER, TRAJECTORY4 INTEGER, SIDESPIN4 INTEGER, SPEED4 INTEGER, BACKSPINTOP4 INTEGER, ");
    sb.append("TRAJECTORY5 INTEGER, SIDESPIN5 INTEGER, SPEED5 INTEGER, BACKSPINTOP5 INTEGER, TRAJECTORY6 INTEGER, SIDESPIN6 INTEGER, SPEED6 INTEGER, BACKSPINTOP6 INTEGER, ");
    sb.append("SHOTHEIGHT INTEGER )");



    bei den Konstanten COL20 = "TRAJECTORYTABLE1" und in der Tabelle "TRAJECTORY1
    das ist kein wunder bei put mus der gleiche name wie die in der tabelle stehen.

  • nein, das ist dann falsch rüber gekommen, es geht nie. Nur wenn ich unter COL20 bleibe. Dann funktioniert es, egal was ich mit denen (unter20) anstelle.


    Also das mit der Anzeige PUT im Debugger weis ich jetzt nicht wie das geht.
    Ich seh im Debugerjeweils en ADD mit anderer Zahl


    und wenn ich die Variable anzeigen lasse mValues . Das mit size = 19 ist korrekt aber danach wie immer Result -1. hier sieht man auch das die Werte bei 0,1,2 eigentlich nicht die Reihenfolge sind wie sie hinzugefügt wurden (komisch)






    ab und zu bekomme ich diese Meldung wenn ich die COL20 und mehr verwende. Das habe ich darunter (also wenn ich nur bis COL19 verwende) noch nicht bemerkt.
    Das hab ich im Internet auch schon ein wenig gegoogelt. Die häufigste Lösung hat bei mir aber nichts gebracht (Build Clean Project und file settings disable Instant Run)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!