Строка базы данных обновления SQLite в Android Studio Java - PullRequest
0 голосов
/ 05 октября 2019

Я хочу обновить строку базы данных SQLite, используя этот код:

public void  updateProfile(String profileName, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15, String col16, String col17){
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "UPDATE " + TABLE_NAME + " SET "
            + COL3 + " = '" + col3
            + COL4 + " = '" + col4
            + COL5 + " = '" + col5
            + COL6 + " = '" + col6
            + COL7 + " = '" + col7
            + COL8 + " = '" + col8
            + COL9 + " = '" + col9
            + COL10 + " = '" + col10
            + COL11 + " = '" + col11
            + COL12 + " = '" + col12
            + COL13 + " = '" + col13
            + COL14 + " = '" + col14
            + COL15 + " = '" + col15
            + COL16 + " = '" + col16
            + COL17 + " = '" + col17
            + "' WHERE " + COL2 + " = '" + profileName + "'";

    Log.d(TAG, "update Profile: " + profileName);
    db.execSQL(query);
}     

По некоторым причинам я получаю некоторые ошибки.

1 Ответ

0 голосов
/ 05 октября 2019

У вас есть две повторяющиеся ошибки / ошибки: -

  1. вы опускаете закрывающую одинарную кавычку вокруг устанавливаемого значения, а
  2. вы пропускаете, (запятая) между отдельными предложениями набора.

Вы хотите: -

public int  updateProfile(String profileName, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15, String col16, String col17){
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "UPDATE " + TABLE_NAME + " SET "
            + COL3 + " = '" + col3 + "',"
            + COL4 + " = '" + col4 + "',"
            + COL5 + " = '" + col5 + "',"
            + COL6 + " = '" + col6 + "',"
            + COL7 + " = '" + col7 + "',"
            + COL8 + " = '" + col8 + "',"
            + COL9 + " = '" + col9 + "',"
            + COL10 + " = '" + col10 + "',"
            + COL11 + " = '" + col11 + "',"
            + COL12 + " = '" + col12 + "',"
            + COL13 + " = '" + col13 + "',"
            + COL14 + " = '" + col14 + "',"
            + COL15 + " = '" + col15 + "',"
            + COL16 + " = '" + col16 + "',"
            + COL17 + " = '" + col17
            + "' WHERE " + COL2 + " = '" + profileName + "'";

    Log.d(TAG, "update Profile: " + profileName);
    db.execSQL(query);
}
  • Обратите внимание, что выше не проверено, но в принципе это то, что вы хотите.

Однако;

проще и менее подвержен ошибкам, это позволяет SQLiteDatabase update удобный метод выполнить работу по генерации SQL для вас. Поэтому я бы предложил использовать: -

public void  updateProfile(String profileName, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15, String col16, String col17){

    ContentValues cv = new ContentValues();
    cv.put(COL3,col3);
    cv.put(COL4,col4);
    cv.put(COL5,col5);
    cv.put(COL6,col6);
    cv.put(COL7,col7);
    cv.put(COL8,col8);
    cv.put(COL9,col9);
    cv.put(COL10,col10);
    cv.put(COL11,col11);
    cv.put(COL12,col12);
    cv.put(COL13,col13);
    cv.put(COL14,col14);
    cv.put(COL15,col15);
    cv.put(COL16,col16);
    cv.put(COL17,col17);
    SQLiteDatabase db = this.getWritableDatabase();
    Log.d(TAG, "update Profile: " + profileName);
    return db.update(TABLE_NAME,cv,COL2 + "=?",new String[]{profileName};

}
  • Снова этот код не был протестирован или запущен, поэтому он может содержать некоторые ошибки.
  • Обратите внимание на ссылку на обновлениеметод выше.
  • Обратите внимание , что public int updateProfile было использовано, это означает, что будет возвращено количество обновленных строк, что может быть полезно.
  • COL2 + "=?" говорит о привязке параметра, то есть о замене ? значением в соответствии со строкой [].
    • Несколько? Могут быть использованы для более сложных ситуаций, в случае чего первый? будет заменен первый элемент в строке [], второй? будет заменен вторым элементом в строке [] и так далее.
...