Не применяются параметры при вызове query.prepare()
q.prepare("call new_employee(:new_login,"
":first_name,"
":last_name,"
":phone_number,"
":email,"
"'2',"
":hashed_password);");
q.bindValue(":new_login", login);
q.bindValue(":first_name", firstName);
q.bindValue(":last_name", secondName);
q.bindValue(":phone_number", phone);
q.bindValue(":email", mail);
q.bindValue(":hashed_password", hashing(password));
q.exec();
new_employee - процедура по созданию нового юзера. Процедура принимает в кач-ве параметров , 6 varchar-ов и один integer. Все параметры login, first_name ... берутся из lineEdit из ui(методом text()), соответственно имеют тип qstring.
query.lastQuery() показывается примерное следующее
"CALL new_employee(?,?,?,?,?,'2',?);"
либо
"call new_employee(:new_login,:first_name,:last_name,:phone_number,:email,'2',:hashed_password);"
в зависимости от того какой синтаксис выбираю для написания запроса.
Ответы (1 шт):
Автор решения: Chingiz
→ Ссылка
окей, не юзайте qstring как аргументы в prepare, так же не юзайте такой синтаксис
query.prepare(QString("sql-запрос").arg(login).arg(firstName).arg(secondName));
так как вы форматируете всю строку, идущую в виде запроса в бд, в непонятный для нее qstring, не со всеми бд так, но для postgres это верно, либо же это просто в моем случае так произошло.
- не уверен в информации, но к другому выводу я прийти не смог