我的QT5中的SQLite数据库有问题。我有一张名为" mytable"我试图在那里保存,更改或加载数据。该表看起来像这样(代码):
"mytable" ("id" INTEGER PRIMARY KEY NOT NULL , "name" VARCHAR NOT NULL , "akcie" INTEGER NOT NULL )
然后我尝试使用这个数据库(CODE):
void MainWindow::on_pushButton_save_clicked()
{
QString jmeno, IDcko, ak;
IDcko = ui->lineEdit_ID->text();
jmeno = ui->lineEdit_Name->text();
ak = ui->lineEdit_Akcie->text();
open_connection();
QSqlQuery query;
query.prepare("INSERT INTO mytable(id, name, akcie) VALUES(id= \'"+ IDcko +"\', name= \'"+ jmeno +"\', akcie= \'"+ ak +"\')");
if(query.exec())
{
QMessageBox::information(this, tr("SAVED"), tr("Some text."));
close_connection();
}
else
{
QMessageBox::critical(this, tr("NOT SAVED"), query.lastError().text());
qDebug() << query.lastError().text();
}
}
在同一个文件中打开这样的连接(CODE):
bool MainWindow::open_connection()
{
QSqlDatabase database;
database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName("..\\added\\test_table.sqlite");
if(!database.open())
{
qDebug() << "not opened connection";
return false;
}
else
{
qDebug() << "opened connection";
return true;
}
}
我仍然得到错误:&#34;没有查询无法获取行&#34;,我一直在寻找答案真的很难但没有任何效果。可能是因为某些包含还是我做错了什么?
提前感谢您的帮助!
答案 0 :(得分:2)
您没有正确准备查询。使用bindings之类的:
query.prepare("INSERT INTO mytable(id, name, akcie) VALUES(:id, :name, :akcie)");
query.bindValue(":id", IDcko);
query.bindValue(":name", jmeno);
query.bindValue(":akcie", ak);
答案 1 :(得分:0)
您没有执行查询。您应该使用如下绑定:
query.prepare("INSERT INTO mytable(id, name, akcie) VALUES(?, ?, ?)");
query.addBindValue(IDcko);
query.addBindValue(jmeno);
query.addBindValue(ak);
query.exec();
,或者像@Miki一样,借助query.bindValue(":id", IDCko)
函数。
最后一种方法是直接编写查询文本(无需单独调用query.exec()
:
query("INSERT INTO mytable(id, name, akcie) VALUES(id= \'"+ IDcko +"\', name= \'"+ jmeno +"\', akcie= \'"+ ak +"\')");