2016-04-28 213 views
-3

當我嘗試在我的android代碼的SQLite數據庫中插入和選擇句子時,出現該錯誤。有人可以給我任何想法來解決這個問題嗎?

代碼:

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

發佈您的代碼? –

+0

public boolean altaCliente(Clientes c){ SQLiteDatabase db = getReadableDatabase(); (「」+ c.getNumero()+「','」+ c.getNombre()+「','」+ c.getAlias()+「','」 + c.getGruPrecioCliente()+「','」+ c.getGruDesCliente()+「','」+ c.getGruRegIvaNeg()+「')」); 返回true; } – Maria

+0

這是一個應用程序崩潰的例子,但我確定問題不存在。我想也許這是由於一些空白字段。 – Maria

回答

0

MethodAndArgsCaller告訴你,你錯了傳遞參數的方法。
在這種情況下,您未將所有必需參數傳遞給execSQL()

另外請注意,execSQL()不會重新調用任何值,所以返回true是沒有用的。

我已經重寫你的方法是這樣的:

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! 
} 

這隻解決了MethodAndArgsCaller例外。

解決該問題後,您可能會有更多異常。

  • 我一定會認爲所有的列是(因爲你將所有字符串!)。如果不是,這可能會導致異常。
  • 而且您並未嘗試手動插入AUTOINCREMENT字段(c.getNumero()?)。否則這會導致另一個例外。
  • 你的句子不包含任何撇號('),因爲我沒有看到任何代碼,如果你有它如果存在。如果你沒有雙引號,這會導致另一個錯誤。

建議:

Using bound parameters would be a better solution.