«Пользователь может ввести что угодно».
Это не дает нам много возможности пройти, но я могу привести пример того, как настроить основной запрос на вставку.
// I assume you already have a QSqlDatabase object called 'db'
QSqlQuery query(db);
QString s = "INSERT INTO table (colA, colB) VALUES (:valA, :valB);"
query.prepare(s);
// You only need to prepare the query once
// To actually insert values into colA & colB, do this:
query.bindValue(":valA", QString("stuff to put in colA"));
query.bindValue(":valB", QString("other stuff for colB"));
query.exec();
query.finish(); // you probably don't even need this
Метод bindValue
принимает QVariant
в качестве второго аргумента (я использовал строки в моем примере, но вы можете использовать что-либо поддерживаемый тип варианта). Вам просто нужно убедиться, что тип значений имеет смысл для соответствующих столбцов в вашей базе данных.
Кроме того, я использую синтаксис PostgreSQL для моего примера. Я думаю, что это стандартно, но вам может потребоваться изменить привязку параметров (:valA
:valB
) в соответствии с ожидаемым движком db.
'QSqlQuery query (QString)', который создаст запрос из QString, что вы будете иметь, если у вас есть строка из некоторого lineedit на ui? это помогает? – AngryDuck
@AngryDuck: нет, это не работает, если строка содержит зарезервированные символы, такие как кавычки. Использование bindValue было решением, например. это прекрасно работает: 'query.bindValue («: TextData », QString (« Тест «одиночные метки» и «двойные метки»)); ' –