【问题标题】:Database insert error (Qt,sqlite)数据库插入错误(Qt,sqlite)
【发布时间】:2015-05-23 17:31:21
【问题描述】:

我为这个问题寻求帮助,但在任何地方都找不到答案。我有一个加载多个字符串变量的程序,然后我试图将它们粘贴到 sqlite3 数据库中,一切似乎都很好,我有一个连接,但是这段代码给了我一个错误:预期的';'在字符串常量之前(它在 farba 变量之前要求它。有什么想法吗?

QSqlQuery query;
query.exec("INSERT INTO spz VALUES") "(Meno,Priezvisko,Datum,Bydlisko,COP,Znacka,Model,Farba,Objem,Rok,SPZ) VALUES('"  meno  "','"  priezvisko  "','"  vek  "','"  bydlisko  "','"  cop  "','"  vyrobca  "','"  model  "','"  farba  "','"  objem  "','"  rok  "','"  znacka"');");

【问题讨论】:

  • 你觉得这个字符串合适吗?
  • 我现在发现我搞砸了,但即使是下面提到的代码也不适合我。
  • 我有时会在调用query.exec() 函数之前在变量中创建字符串。这样你就可以打印出来看看它是否正确构建。
  • 您要放入数据库字段的某些变量可能包含会扰乱SQL 字符串的字符。例如,如果它们包含引号。所以你可能需要转义你的一些字段。将SQL 打印出来应该会突出显示这些问题。

标签: c++ qt sqlite


【解决方案1】:

试试这个

QSqlQuery query;
query.exec("INSERT INTO spz(Meno,Priezvisko,Datum,Bydlisko,COP,Znacka,Model,Farba,Objem,Rok,SPZ) VALUES('" + meno + "','" + priezvisko + "','"  + vek + "','" + bydlisko + "','" + cop + "','" + vyrobca + "','" + model + "','" + farba + "','" + objem + "','" + rok  "','" + znacka +"');");

其他方法:

QSqlQuery query;
query.prepare("INSERT INTO spz(Meno,Priezvisko,Datum,Bydlisko,COP,Znacka,Model,Farba,Objem,Rok,SPZ) VALUES (:meno, :priezvisko, :vek, :bydlisko, :cop, :vyrobca, :model, :farba, :objem, :rok, :znacka)");
query.bindValue(":meno", meno);
query.bindValue(":vek", vek);
query.bindValue(":bydlisko", bydlisko);
query.bindValue(":cop", cop);
query.bindValue(":vyrobca", vyrobca);
query.bindValue(":model", model);
query.bindValue(":farba", farba);
query.bindValue(":objem", objem);
query.bindValue(":rok", rok);
query.bindValue(":znacka", znacka);
query.exec();

【讨论】:

  • 谢谢,但是由于 + char,这个返回了 Incopatible types string 和 integer。
  • 我不知道 meno、priezvisko、vek、... 变量的数据类型。您需要为每种数据类型进行正确的转换。
  • 数据类型也是字符串。如果您不介意我问,正确的铸造是什么意思?
  • 我认为参数不是字符串数据类型。我添加了另一种方法,可以让您避免字符串连接。两者都应该适合你。如果您对我的代码仍有疑问,请提及您收到的错误消息。
  • std::string 到 query.bindValue(),但它需要一个 QString。您可以在传递之前尝试转换每个变量,例如: QString vv = meno.c_str();query.bindValue(":meno", vv);
猜你喜欢
  • 2018-11-24
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
相关资源
最近更新 更多