2016-04-28 6 views
-3

私のアンドロイドコードの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(クライアントc){ SQLiteDatabase db = getReadableDatabase(); db.execSQL( "INSERT INTOクライアントVALUES( '" + "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.

関連する問題