2016-04-28 15 views
-3

Ich bekomme diesen Fehler, wenn ich versuche, Sätze einfügen und wählen Sie in meiner SQLite-Datenbank von meinem Android-Code. Könnte mir jemand eine Idee geben, um das zu lösen?

Code:

public boolean altaCliente(Clientes c) { 
    SQLiteDatabase db = getReadableDatabase(); 
    db.execSQL("INSERT INTO Clientes VALUES ('" 
      + c.getNumero() 
      + "','" 
      + c.getNombre() + "','" 
      + c.getAlias() + "','" 
      + c.getGruPrecioCliente() 
      + "','" 
      + c.getGruDesCliente() 
      + "','" 
      + c.getGruRegIvaNeg() + "') "); 
    return true; 
} 
+0

posten Sie Ihren Code? –

+0

public boolean altaCliente (clientes c) { SQLiteDatenbank db = getReadableDatabase(); db.execSQL ("INSERT INClientes VALUES ('" + c.getNumero() +' ',' "+ c.getNombre() + '', '" + c.getAlias ​​() +' ',' " + c.getGruPrecioCliente() + '', '"+ c.getGruDesCliente() +"', '"+ c.getGruRegIvaNeg() +"') "); Rückkehr wahr; } – Maria

+0

Dies ist ein Beispiel, wo die Anwendung abstürzt, aber ich bin mir wirklich sicher, dass das Problem nicht da ist. Ich denke, vielleicht liegt es an einem Nullfeld. – Maria

Antwort

0

MethodAndArgsCaller sagt Ihnen, dass Sie falsche Argumente an eine Methode übergeben. In diesem Fall übergeben Sie nicht alle erforderlichen Argumente an execSQL().

Bedenken Sie auch, dass execSQL() keinen Wert zurückgibt, so dass es absolut nutzlos ist, wahr zurückzugeben.

Ich würde Ihre Methode wie folgt umschreiben:

public void altaCliente(Clientes c) 
{ 
    SQLiteDatabase db = getReadableDatabase(); 
    db.execSQL("INSERT INTO Clientes VALUES ('" + 
     c.getNumero() + "', '" + 
     c.getNombre() + "', '" + 
     c.getAlias() + "', '" + 
     c.getGruPrecioCliente() + "', '" + 
     c.getGruDesCliente() + "', '" + 
     c.getGruRegIvaNeg() + "')", 
     null); // This is your missing parameter! 
} 

Dies löst die MethodAndArgsCaller einzige Ausnahme.

Sie könnten weitere Ausnahmen haben, nachdem Sie das gelöst haben.

  • Ich muss denken, dass alle Ihre Spalten sind Strings (weil Sie alle Strings sind Einfügen!). Wenn nicht, kann dies eine Ausnahme verursachen.
  • Und dass Sie nicht versuchen, ein AUTOINCREMENT-Feld manuell einzufügen (c.getNumero()?). Oder das würde eine weitere Ausnahme verursachen.
  • Dass Ihre Sätze keine Apostroph enthalten ('), weil ich keinen Code sehen, wo Sie double es wenn vorhanden. Wenn Sie Apostrophe nicht verdoppeln, würde dies einen weiteren Fehler verursachen.

Vorschlag:

Using bound parameters would be a better solution.

Verwandte Themen