1.int main(int argc, char *argv[])
2.{
3. QApplication a(argc, argv);
4. QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
5. db.setHostName("localhost");
6. db.setDatabaseName("test");
7. db.setUserName("root");
8. db.setPassword("12345678");
9. if (!db.open())
10. {
11. qDebug()<< "Not Conn";
12. return false;
13. }
14. else
15. {
16. qDebug()<<"connected";
17. QSqlQuery qry;
18. qry.prepare("insert into test.inter(id,cname)
19. values(:id,:cname)");//id int, cname varchar(19)
20. qry.bindValue(0,2);
21. qry.bindValue(1,"far");
22. if(qry.exec())
23. {
24. qDebug()<<"Inserted";
25. }
26. else
27. {
28. qDebug()<<qry.lastError().text();
29. qDebug()<<qry.result();
30. qDebug()<<qry.executedQuery();
31. }
32. }
33. }
答案 0 :(得分:0)
将bindValues替换为:
$sth->bindValue(':id', 2, PDO::PARAM_INT);
$sth->bindValue(':cname', "far", PDO::PARAM_STR);
...或
将第19行替换为:
values(?, ?)");
所以尝试用以下代码替换20 - 21行:
qry.bindValue(":id:",2);
qry.bindValue(":cname","far");
答案 1 :(得分:0)
从准备好的语句中删除数据库名称。因为您在调用setDatabaseName
时指定,所以不需要。 (查询中的数据库名称是导致误导性错误的原因)。将插入保留为:
qry.prepare("insert into inter(id,cname) values(:id,:cname)");