0

個人クエリを使用してテーブルの値を更新しています。この場合、特定の列の値を増やしています。たとえば、次のようなことをしますか?

UPDATE statistica SET 1PF = 1PF + ? WHERE id_statistica = ?;

私のコードは次のとおりです。

String sql = "UPDATE " + StatisticaTable.TABLE_NAME + " SET " + StatisticaTable._1PF + " = " + StatisticaTable._1PF + " + ?, " +
                                                                    StatisticaTable._1PN + " = " + StatisticaTable._1PN + " + ?, " + 
                                                                    StatisticaTable._2PF + " = " + StatisticaTable._2PF + " + ?, " +
                                                                    StatisticaTable._2PN + " = " + StatisticaTable._2PN + " + ?, " +
                                                                    StatisticaTable._3PF + " = " + StatisticaTable._3PF + " + ?, " +
                                                                    StatisticaTable._3PN + " = " + StatisticaTable._3PN + " + ?, " +
                                                                    StatisticaTable.RD + " = " + StatisticaTable.RD + " + ?, " + StatisticaTable.RO + " = " + StatisticaTable.RO + " + ?, " +
                                                                    StatisticaTable.PR + " = " + StatisticaTable.PR + " + ?, " + StatisticaTable.AS + " = " + StatisticaTable.AS + " + ?, " +
                                                                    StatisticaTable.BK + " = " + StatisticaTable.BK + " + ?, " + StatisticaTable.FS + " = " + StatisticaTable.FS + " + ?, " +
                                                                    StatisticaTable.PP + " = " + StatisticaTable.PP + " + ?, " + StatisticaTable.FP + " = " + StatisticaTable.FP + " + ? " +
                                                                    "WHERE " + GiocatoreTable.ID_GIOCATORE + "= ? AND + " + StatisticaTable.ID_PARTITA + "= ?;";

    String[] parameter = new String[] {String.valueOf(values.get1pf()), String.valueOf(values.get1pn()), String.valueOf(values.get2pf()), String.valueOf(values.get2pn()), 
                                       String.valueOf(values.get3pf()), String.valueOf(values.get3pn()), String.valueOf(values.getRD()), String.valueOf(values.getRO()), String.valueOf(values.getPR()), 
                                       String.valueOf(values.getAS()), String.valueOf(values.getBK()), String.valueOf(values.getFS()), 
                                       String.valueOf(values.getPP()), String.valueOf(values.getFP()), String.valueOf(values.getIDGiocatore()), String.valueOf(values.getIDPartita())};

_dbHelper.getWritableDatabase().execSQL(sql, parameter);

本質的にコードはこれです...しかし、パラメーターが正しく渡され、SQL文字列が正しい方法で形成されているにもかかわらず、何も更新しません(両方のexecSQL rawQueryを使用)...何が間違っているのかわかりません.. .

4

1 に答える 1

1

SQL 例外が発生しない場合は、おそらく WHERE ステートメントに注目する必要があります。

"WHERE " + GiocatoreTable.ID_GIOCATORE + "= ? AND + " + StatisticaTable.ID_PARTITA + "= ?;";

SQLite は 5 つの基本的なデータ型しか使用しないため、少し扱いに​​くい場合があります。格納されたデータベース値と検索パラメーターの型が異なる場合、WHERE ステートメントが失敗する可能性があることに気付きました。ID_GIOCATORE パラメーターと ID_PARTITA パラメーターを、データベースで使用されるネイティブ型に変換してみてください。

http://www.sqlite.org/datatype3.html

于 2013-09-13T21:06:40.460 に答える