Qt PostgreSQL外键问题



我在Qt Creator中创建了一个名为user_parameters的表。当我试图给出另一个表的参考时,它是城市。我遇到了一个语法错误。下面给出了使用外键和错误的代码片段。如何解决这个错误?谢谢你的帮助。

QSqlQuery query;
query.exec("CREATE TABLE user_parameters "
"(id SERIAL primary key, "
"firstname varchar(50), "
"lastname varchar(50), "
"age integer, "
"username varchar(50), "
"password varchar(100), "
"cityID integer references cities(id))");

QSqlQuery insertQuery;
int last_id = maxIdValue() + 1;
insertQuery.prepare("INSERT INTO user_parameters (id, firstname, lastname, age, username, password, cityID)"
"VALUES(:id, :firstname, :lastname, :age, :username, :password, :cityID)");
insertQuery.bindValue(":id", last_id);
insertQuery.bindValue(":firstname", fName);
insertQuery.bindValue(":lastname", lName);
insertQuery.bindValue(":age", age);
insertQuery.bindValue(":username", userName);
insertQuery.bindValue(":password", password);
insertQuery.bindValue(":cityID", cityID);

QSqlError("42601", "QPSQL:无法创建查询", "ERROR:语法错误在"("nLINE 1: EXECUTE (1, 'Name', '姓',22,'userName', 'password', 1)n ^n(42601)")

您的查询看起来很好,但是您可能在"values"之前缺少一个空格。关键字。还有两个旁注:

  1. serial是已弃用的标识列。使用generated as identity代替。

  2. serial/identity列是由sql引擎管理的,你可以避免得到最大值,每次都插入它。

:

insertQuery.prepare("INSERT INTO user_parameters (firstname, lastname, age, username, password, cityID) "
"VALUES(:firstname, :lastname, :age, :username, :password, :cityID)");

注意第一行

末尾的空格

最新更新