1. C++ / Говнокод #18607

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // пример использования Exaro в своей программе
    // http://www.wiki.crossplatform.ru/index.php/Qt/FAQ/Exaro
    int personId = QString(argv[1]).toInt();
    QString query(QString("SELECT person.id, person.name, city.title " \
    		" FROM person, city " \
    		" WHERE person.city = city.id and person.id = %1").arg(personId));

    Запостил: OlegUP, 17 Августа 2015

    Комментарии (9) RSS

    • QString::toInt() работает как валидатор, почему бы и нет. А как по-умному, argv[1] пропихивать напрямую в запрос?
      ./example '0; DROP TABLE person; DROP TABLE city'
      Ответить
      • > как по-умному
        bindValue() же.
        Ответить
        • Спорное решение, bindValue принимает QVariant, для которого argv[1] все равно нужно будет преобразовывать в целое и в результате буде такой же запрос. Смысл?
          Ответить
          • > нужно будет преобразовывать
            Ну можно и не преобразовывать, а поручить это дело СУБД.
            Ответить
            • Не нахожусь, что ответить, bindValue действительно выглядит корреткней. Я не прав :)
              Ответить
      • Ну так то да, но лучше использовать как валидатор то, что называется валидатором, а в контексте того кода эта операция просто бессмысленна.
        Ответить
    • Переносы строк шикарные.
      Ответить
      • Может, есть кококомпиляторы, не умеющие склеивать строки?
        Ответить
        • Они не скомпилят кьют в таком случае.
          Ответить

    Добавить комментарий