• Что не так с запросом, ошибка: "error: syntax error at end of input"?

    @andrewpilikin
    В синтаксисе ошибка, например имя таблицы может содержать пробел, или строка может иметь символ который неправильно интерпретируется.
    Для примера операция Дэлит:
    Такой синтакисис не работает, тут понятно, когда вставляешь запрос в средство работы с БД, кути генерирует ту же ошибку:
    const QString request="DELETE FROM \"" + tableName + "\" WHERE name=\""+rowName+"\";";

    Такой синтаксис работает:
    const QString request="DELETE FROM \"" + tableName + "\"" +
                " WHERE name=\'"+ rowName +"\'";

    И пример с инсертом:
    Не работает:
    const QString request="INSERT INTO \"" + tableName +"\" ( name ) VALUES ( "+ rowName + " );";

    Вроде бы должен работать, скопировав в DataGrid все выполняется:
    const QString request="INSERT INTO \"" + tableName+ "\" (name) "+
        "VALUES ('"+ rowName+ "');  ";

    И снова нет.
    Вот рабочий вариант:
    const QString request="INSERT INTO \""+ tableName+"\""+
                " ( name ) VALUES (?)";
        query.prepare(request);
        query.bindValue(0, rowName);

    Порой не угадаешь почему запрос не работает. Аналогичный, один в один, скопированный в pgAdmin или Датагрид выполняется на ура. Именно поэтому вместо чистого sql запроса лучше использовать ORM
    Ответ написан
    Комментировать