我收到此错误:com.android.internal.os.ZygoteInit $ MethodAndArgsCaller

时间:2016-04-28 10:35:52

标签: android sqlite android-sqlite

当我尝试在我的Android代码的SQLite数据库中插入和选择句子时,我收到了该错误。有人能给我任何解决这个问题的想法吗?

代码:

{{1}}

1 个答案:

答案 0 :(得分: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()?)。或者这会导致另一个例外。
  • 您的句子不包含任何撇号('),因为如果存在,我没有看到加倍的任何代码。如果你没有双撇号,这将导致另一个错误。

建议:

  

使用绑定参数将是更好的解决方案。