Как изменить этот запрос SQLite для предотвращения SQL-инъекций - PullRequest
0 голосов
/ 08 октября 2018

В ContentProvider приложения для Android (Java) У меня есть запрос SQLiteDatabase:

db.execsql("SELECT " +
    FormsColumns._ID + ", " +
    FormsColumns.DISPLAY_NAME + ", " +
    FormsColumns.DISPLAY_SUBTEXT + ", " +
    FormsColumns.DESCRIPTION + ", " +
    FormsColumns.JR_FORM_ID + ", " +
    FormsColumns.MD5_HASH + ", " +
    FormsColumns.DATE + ", " +
    FormsColumns.FORM_MEDIA_PATH + ", " +
    FormsColumns.FORM_FILE_PATH + ", " +
    FormsColumns.LANGUAGE   + ", " +
    FormsColumns.SUBMISSION_URI + ", " +
    "CASE WHEN " + MODEL_VERSION + " IS NOT NULL THEN " +
    "CAST(" + MODEL_VERSION + " AS TEXT) ELSE NULL END, " +
    ((oldVersion != 3) ? "" : (FormsColumns.BASE64_RSA_PUBLIC_KEY + ", ")) + FormsColumns.JRCACHE_FILE_PATH + " " + 
    "FROM " + FORMS_TABLE_NAME);

Это не простой запрос, я знаю, как реорганизовать простой запрос с помощью метода SQLiteDatabase.query ()чтобы предотвратить внедрение SQL, но в этом случае я не знаю, как решить эту проблему.Если я буду использовать класс SQLiteStatements с "?"вместо переменных, которые будут изменены, это могло бы работать?Как вы все предлагаете мне решить?Спасибо.

...