Datenbank SQLite , db.insert Problem Result = -1

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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ß

    Quellcode

    1. long result = db.insert(TABLE_NAME,null,contentValues);
    2. 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

    Quellcode

    1. public class DataBaseHelper extends SQLiteOpenHelper
    2. {
    3. public static final String DATABASE_NAME = "database.db";
    4. public static final String TABLE_NAME = "database_table";
    5. public static final String COL1 = "_ID";
    6. public static final String COL2 = "LEFTHANDPLAYERA"; //Button
    7. public static final String COL3 = "LEFTHANDPLAYERB"; //Button
    8. public static final String COL4 = "FILTER1"; //Spinner
    9. public static final String COL5 = "FILTER2"; //Spinner
    10. public static final String COL6 = "BALLSHOTLISTTABLE1PLAYERA"; //Spinner
    11. public static final String COL7 = "BALLSHOTLISTTABLE1PLAYERB"; //Spinner
    12. public static final String COL8 = "BALLSHOTLISTTABLE2PLAYERA"; //Spinner
    13. public static final String COL9 = "BALLSHOTLISTTABLE2PLAYERB"; //Spinner
    14. public static final String COL10 = "BALLSHOTLISTTABLE3PLAYERA"; //Spinner
    15. public static final String COL11 = "BALLSHOTLISTTABLE3PLAYERB"; //Spinner
    16. public static final String COL12 = "BALLSHOTLISTTABLE4PLAYERA"; //Spinner
    17. public static final String COL13 = "BALLSHOTLISTTABLE4PLAYERB"; //Spinner
    18. public static final String COL14 = "BALLSHOTLISTTABLE5PLAYERA"; //Spinner
    19. public static final String COL15 = "BALLSHOTLISTTABLE5PLAYERB"; //Spinner
    20. public static final String COL16 = "BALLSHOTLISTTABLE6PLAYERA"; //Spinner
    21. public static final String COL17 = "BALLSHOTLISTTABLE6PLAYERB"; //Spinner
    22. public static final String COL18 = "DESCRIPTION"; // Textbox
    23. public static final String COL19 = "SHORTDESCRIPTION"; // Textbox
    24. public static final String COL20 = "TRAJECTORYTABLE1"; //Seekbar
    25. public static final String COL21 = "SIDESPINTABLE1"; //Seekbar
    26. public static final String COL22 = "SPEEDTABLE1"; //Seekbar
    27. public static final String COL23 = "BACKSPINTOPTABLE1"; //Seekbar
    28. public static final String COL24 = "TRAJECTORYTABLE2"; //Seekbar
    29. public static final String COL25 = "SIDESPINTABLE2"; //Seekbar
    30. public static final String COL26 = "SPEEDTABLE2"; //Seekbar
    31. public static final String COL27 = "BACKSPINTOPTABLE2"; //Seekbar
    32. public static final String COL28 = "TRAJECTORYTABLE3"; //Seekbar
    33. public static final String COL29 = "SIDESPINTABLE3"; //Seekbar
    34. public static final String COL30 = "SPEEDTABLE3"; //Seekbar
    35. public static final String COL31 = "BACKSPINTOPTABLE3"; //Seekbar
    36. public static final String COL32 = "TRAJECTORYTABLE4"; //Seekbar
    37. public static final String COL33 = "SIDESPINTABLE4"; //Seekbar
    38. public static final String COL34 = "SPEEDTABLE4"; //Seekbar
    39. public static final String COL35 = "BACKSPINTOPTABLE4"; //Seekbar
    40. public static final String COL36 = "TRAJECTORYTABLE5"; //Seekbar
    41. public static final String COL37 = "SIDESPINTABLE5"; //Seekbar
    42. public static final String COL38 = "SPEEDTABLE5"; //Seekbar
    43. public static final String COL39 = "BACKSPINTOPTABLE5"; //Seekbar
    44. public static final String COL40 = "TRAJECTORYTABLE6"; //Seekbar
    45. public static final String COL41 = "SIDESPINTABLE6"; //Seekbar
    46. public static final String COL42 = "SPEEDTABLE6"; //Seekbar
    47. public static final String COL43 = "BACKSPINTOPTABLE6"; //Seekbar
    48. public static final String COL44 = "SHOTHEIGHT"; //Spinnner
    49. public DataBaseHelper(Context context) {
    50. super(context, DATABASE_NAME, null, 1);
    51. }
    52. @Override
    53. public void onCreate(SQLiteDatabase db) {
    54. //private static final String createTable = "CREATE TABLE " + TABLE_NAME + " (" + ID + "INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME1 + "TEXT, " + NAME2 + "TEXT);";
    55. // String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME1 TEXT, NAME2 TEXT, RB1 INTEGER)";
    56. //String createTable = "CREATE TABLE " + TABLE_NAME + " (_ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME1 TEXT, NAME2 TEXT, RB1 TEXT, SP1 INTEGER, SB1 INTEGER)"; //funktioniert
    57. // String createTable = "CREATE TABLE " + TABLE_NAME + " (_ID INTEGER PRIMARY KEY AUTOINCREMENT, LEFTHANDPLAYERA TEXT, LEFTHANDPLAYERB TEXT, FILTER1 INTEGER, FILTER2 INTEGER, " +
    58. // " BALLSHOTLISTTABLE3PLAYERA INTEGER, BALLSHOTLISTTABLE3PLAYERB INTEGER, " +
    59. // "BALLSHOTLISTTABLE4PLAYERA INTEGER, BALLSHOTLISTTABLE4PLAYERB INTEGER, BALLSHOTLISTTABLE5PLAYERA INTEGER, BALLSHOTLISTTABLE5PLAYERB INTEGER, BALLSHOTLISTTABLE6PLAYERA INTEGER, BALLSHOTLISTTABLE6PLAYERB INTEGER, " +
    60. // "DESCRIPTION TEXT, SHORTDESCRIPTION TEXT, " +
    61. // "TRAJECTORY1 INTEGER, SIDESPIN1 INTEGER, SPEED1 INTEGER, BACKSPINTOP1 INTEGER, TRAJECTORY2 INTEGER, SIDESPIN2 INTEGER, SPEED2 INTEGER, BACKSPINTOP2 INTEGER, " +
    62. // "TRAJECTORY3 INTEGER, SIDESPIN3 INTEGER, SPEED3 INTEGER, BACKSPINTOP1 INTEGER, TRAJECTORY4 INTEGER, SIDESPIN4 INTEGER, SPEED4 INTEGER, BACKSPINTOP4 INTEGER, " +
    63. // "TRAJECTORY5 INTEGER, SIDESPIN5 INTEGER, SPEED5 INTEGER, BACKSPINTOP5 INTEGER, TRAJECTORY6 INTEGER, SIDESPIN6 INTEGER, SPEED6 INTEGER, BACKSPINTOP6 INTEGER, " +
    64. // "SHOTHEIGHT INTEGER)";
    65. StringBuilder sb = new StringBuilder();
    66. sb.append("CREATE TABLE ");
    67. sb.append(TABLE_NAME);
    68. sb.append(" (_ID INTEGER PRIMARY KEY AUTOINCREMENT, ");
    69. sb.append("LEFTHANDPLAYERA TEXT, LEFTHANDPLAYERB TEXT, FILTER1 INTEGER, FILTER2 INTEGER, ");
    70. sb.append("BALLSHOTLISTTABLE1PLAYERA INTEGER, BALLSHOTLISTTABLE1PLAYERB INTEGER, BALLSHOTLISTTABLE2PLAYERA INTEGER, BALLSHOTLISTTABLE2PLAYERB INTEGER, ");
    71. sb.append("BALLSHOTLISTTABLE3PLAYERA INTEGER, BALLSHOTLISTTABLE3PLAYERB INTEGER, BALLSHOTLISTTABLE4PLAYERA INTEGER, BALLSHOTLISTTABLE4PLAYERB INTEGER, ");
    72. sb.append("BALLSHOTLISTTABLE5PLAYERA INTEGER, BALLSHOTLISTTABLE5PLAYERB INTEGER, BALLSHOTLISTTABLE6PLAYERA INTEGER, BALLSHOTLISTTABLE6PLAYERB INTEGER, ");
    73. sb.append("DESCRIPTION TEXT, SHORTDESCRIPTION TEXT, ");
    74. sb.append("TRAJECTORY1 INTEGER, SIDESPIN1 INTEGER, SPEED1 INTEGER, BACKSPINTOP1 INTEGER, TRAJECTORY2 INTEGER, SIDESPIN2 INTEGER, SPEED2 INTEGER, BACKSPINTOP2 INTEGER, ");
    75. sb.append("TRAJECTORY3 INTEGER, SIDESPIN3 INTEGER, SPEED3 INTEGER, BACKSPINTOP3 INTEGER, TRAJECTORY4 INTEGER, SIDESPIN4 INTEGER, SPEED4 INTEGER, BACKSPINTOP4 INTEGER, ");
    76. sb.append("TRAJECTORY5 INTEGER, SIDESPIN5 INTEGER, SPEED5 INTEGER, BACKSPINTOP5 INTEGER, TRAJECTORY6 INTEGER, SIDESPIN6 INTEGER, SPEED6 INTEGER, BACKSPINTOP6 INTEGER, ");
    77. sb.append("SHOTHEIGHT INTEGER )");
    78. //db.execSQL(createTable);
    79. db.execSQL(sb.toString());
    80. // String createTable = "CREATE TABLE " + TABLE_NAME + "(" + COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL2 + " TEXT," + COL3 + " TEXT," + COL4 + " TEXT" + ")"; // ein anderer Weg für die String definition
    81. }
    82. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    83. {
    84. db.execSQL("DROP IF TABLE EXISTS" + TABLE_NAME);
    85. onCreate(db);
    86. }
    87. // das ist für save Data
    88. //public boolean addData(String name1, String name2, Integer rb1) //+ String id > könnte eine ID
    89. public boolean addData(String LeftHandPlA, String LeftHandPlB, Integer Filter1, Integer Filter2,
    90. Integer BallShotTable1A, Integer BallShotTable1B, Integer BallShotTable2A, Integer BallShotTable2B , Integer BallShotTable3A, Integer BallShotTable3B,
    91. Integer BallShotTable4A, Integer BallShotTable4B, Integer BallShotTable5A, Integer BallShotTable5B , Integer BallShotTable6A, Integer BallShotTable6B,
    92. String Description, String ShortDescription,
    93. Integer Trajectory1, Integer SideSpin1, Integer Speed1, Integer BackSpinTop1,Integer Trajectory2, Integer SideSpin2, Integer Speed2, Integer BackSpinTop2,
    94. Integer Trajectory3, Integer SideSpin3, Integer Speed3, Integer BackSpinTop3,Integer Trajectory4, Integer SideSpin4, Integer Speed4, Integer BackSpinTop4,
    95. Integer Trajectory5, Integer SideSpin5, Integer Speed5, Integer BackSpinTop5,Integer Trajectory6, Integer SideSpin6, Integer Speed6, Integer BackSpinTop6, Integer ShotHeight)
    96. // public boolean addData(String LeftHandPlA, String LeftHandPlB, Integer Filter1, Integer Filter2,
    97. // Integer BallShotTable1A, Integer BallShotTable1B, Integer BallShotTable2A, Integer BallShotTable2B, Integer BallShotTable3A, Integer BallShotTable3B,
    98. // Integer BallShotTable4A, Integer BallShotTable4B, Integer BallShotTable5A, Integer BallShotTable5B, Integer BallShotTable6A, Integer BallShotTable6B,
    99. // String Description, String ShortDescription)
    Alles anzeigen
  • 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 ?

    Quellcode

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

    und der Text muss identisch sein zu der static definition ?

    Quellcode

    1. public static final String COL16 = "BALLSHOTLISTTABLE6PLAYERA"; //Spinner
    2. public static final String COL17 = "BALLSHOTLISTTABLE6PLAYERB"; //Spinner
    3. public static final String COL18 = "TRAJECTORYTABLE1"; //Seekbar
    4. public static final String COL19 = "DESCRIPTION"; // Textbox
    5. 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)

    Quellcode

    1. public static final String DATABASE_NAME = "database.db";
    2. public static final String TABLE_NAME = "database_table";
    3. public static final String COL1 = "_ID";
    4. public static final String COL2 = "LEFTHANDPLAYERA"; //Button
    5. public static final String COL3 = "LEFTHANDPLAYERB"; //Button
    6. public static final String COL4 = "FILTER1"; //Spinner
    7. public static final String COL5 = "FILTER2"; //Spinner
  • 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.
    Ein Feedback auf Tipps ist auch schön. :P
  • 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)