user2165656
user2165656

Reputation: 455

SQLITE UPDATE OR INSERT statement doesn't want to execute

public synchronized void saveMatchValue(int photoRecOwner,
        int[] photoRecAssign, float[] value) {
    SQLiteDatabase database = databaseHelper.getWritableDatabase();
    database.beginTransaction();
    String sql = " UPDATE " + TypeContract.CTablePhotoMatch.TABLE_NAME
            + " SET " + TypeContract.CTablePhotoMatch.VALUE + "=? "
            + " WHERE " + TypeContract.CTablePhotoMatch.FK_OWNER
            + "=? AND " + TypeContract.CTablePhotoMatch.FK_ASSIGN + "=? ;"
            + " INSERT OR IGNORE INTO "
            + TypeContract.CTablePhotoMatch.TABLE_NAME + "("
            + TypeContract.CTablePhotoMatch.FK_OWNER + ","
            + TypeContract.CTablePhotoMatch.FK_ASSIGN + ","
            + TypeContract.CTablePhotoMatch.VALUE + ") VALUES (?, ?, ?);";

    SQLiteStatement stmt = database.compileStatement(sql);

    try {

        int rows = photoRecAssign.length;
        for (int i = 0; i < rows; i++) {

            if (photoRecOwner > photoRecAssign[i]) {
                stmt.bindLong(1, photoRecOwner);
                // stmt.bindLong(index, value)
                stmt.bindLong(2, photoRecAssign[i]);

            } else {
                stmt.bindLong(1, photoRecAssign[i]);
                stmt.bindLong(2, photoRecOwner);

            }
            stmt.bindDouble(3, value[i]);

            stmt.execute();
            stmt.clearBindings();

        }
        database.setTransactionSuccessful();
    } finally {
        stmt.close();
        // updtStmt.close();
        database.endTransaction();
        // database.close();
    }
}

Without error and compile-error,

I dont know if the sql statement syntax is correct: concrete the : ; , but without compile errors, the insert and(probably update) command are not executed.... Can I catch some more details?(Of sqlite statemenst) to find out the bug

Upvotes: 1

Views: 71

Answers (1)

laalto
laalto

Reputation: 152817

You can only use SQLiteStatement to execute single statements. The SQL after the ; is not executed.

Split the SQL to execute the statements separately.

Upvotes: 1

Related Questions