MySQL использует \
в качестве escape-символа, поэтому для правильной строки запроса вам необходимо экранировать sla sh дважды, один раз для c ++ и один раз для mysql:
"select * from users where name='DOMAIN\\\\name'"
. Более простое решение - правильно использовать подготовленные операторы и заполнители, что в качестве очень важного бонуса защитит ваш код от SQLI .
Обратите внимание, что имена полей и таблиц не могут быть заполнителями большинством если не все движки баз данных, вам все равно нужно будет собрать эту часть вашей строки вручную:
const QString usernamePlaceholder = ":username"
const QString command = QStringLiteral("select * "
"from %1 where name = %2")
.arg(Constants::kUsersTableName).arg(usernamePlaceholder);
QSqlDatabase db = QSqlDatabase::database(m_connection, false);
QSqlQuery query(db);
if (!query.prepare(command)) {
qCDebug() << query.lastError();
return;
}
query.bindValue(usernamePlaceholder, userId);
if (!query.exec()) {
qCDebug() << query.lastError();
return;
}
bindValue
позаботится о том, какие кавычки и экранирование требуются для ваших значений.