【发布时间】:2020-11-27 18:15:46
【问题描述】:
您好,我需要有关 sqlite/Qt 问题的帮助。该表的架构是
CREATE TABLE PROJECT (
"pro_id" INTEGER NOT NULL DEFAULT 1,
"app_id" INTEGER NOT NULL DEFAULT 3,
"Start" TEXT NOT NULL,
"End" TEXT NOT NULL,
"Output" INTEGER NOT NULL,
"Log Type" INTEGER NOT NULL,
"Errors" INTEGER NOT NULL,
"Success" INTEGER NOT NULL,
"NOTES" VARCHAR NOT NULL DEFAULT '',
"Duration" TEXT NOT NULL DEFAULT '00.00.00.000',
PRIMARY KEY("app_ID", "pro_ID", "Start"),
FOREIGN KEY ("Output") REFERENCES "OUTPUTS" ("ID") ,
FOREIGN KEY ("app_ID", "pro_ID") REFERENCES "PROJECTS"("A_ID", "P_ID"),
FOREIGN KEY ("Log Type") REFERENCES "TYPE" ("ID"));
INSERT 查询(Qt 内部)是
temp = "INSERT INTO PROJECT (pro_id, app_ID,
Start, End, Output, Log Type, Errors, Success, NOTES, Duration)
VALUES(1,1, Date & time in quotes, Date & time in double quotes, '1, 1, 0, 0, '0.0.0.0.000')";
我得到的错误是:
QSqlError("1", "Unable to execute", "near \"Type \": syntax error")
我觉得问题出在 sqlite 方面,我一点也不熟悉。我是今年才开始的。我觉得外键是问题所在
【问题讨论】:
-
在 INSERT 语句中,将
Log Type括在反引号、方括号或双引号内。 -
我发现了问题所在。数据是正确的,但由于某种原因,您用于 TEXT、VARCHAR 等的单引号必须插入到 query.exec() 中。我最初将单引号与他们的 QString 变量放在一起。 (例如 QString pro_ID = "'" + project->at(index)->project_name + "'";)我猜你应该总是将单引号直接放在 INSERT 语句中,而不是通过变量间接地。这不是我的专栏,尽管我确实更改了它们以确保它们不会造成问题。
标签: sqlite qt foreign-keys syntax-error sql-insert