Database QSqlQuery不工作
我试图向数据库中添加一行,但不起作用。 我的数据库由alwaysdata托管,我使用Qt Creator开发我的程序(打印无误)和MySql查看数据库 通过MySql查询浏览器,我输入:Database QSqlQuery不工作,database,qt,Database,Qt,我试图向数据库中添加一行,但不起作用。 我的数据库由alwaysdata托管,我使用Qt Creator开发我的程序(打印无误)和MySql查看数据库 通过MySql查询浏览器,我输入: INSERT INTO `mmr` VALUES (NULL,'musictest','albumtest','timetest','datetest'); 它起作用了 但在我的程序中,代码不起作用: void MainWindow::b_clicked(){ QSqlDatabase db = QS
INSERT INTO `mmr` VALUES (NULL,'musictest','albumtest','timetest','datetest');
它起作用了
但在我的程序中,代码不起作用:
void MainWindow::b_clicked(){
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("mysql1.alwaysdata.com");
db.setDatabaseName("mymusicrecognition_mmr");
db.setUserName("xxx");
db.setPassword("yyyy");
if(!db.open())
{
QMessageBox::information(this,"Message","Not connected...");
}
else{
QSqlQuery query;
query.exec(QString("INSERT INTO `mmr` VALUES (NULL,'%1','%2','%3','%4')")
.arg("musictest").arg("albumtest").arg("timetest").arg("datetest"));
QMessageBox::information(this,"Message","Connected !!!");
}
}
我有消息框“已连接!!!”
这一定是初学者的错误而不是从args构造QString尝试准备好QSqlQuery并绑定值。
QString对sql转义一无所知。您使用的是Sqlite驱动程序,因此您似乎没有将数据库传递给QSqlQuery,而不是从这里的代码连接到您的主机名Sqlite文件 而不是
QSqlQuery query;
试试这个
QSqlQuery query(db);
我还建议您更进一步,为sql语句创建一个单独的变量,然后将其作为参数与数据库一起传入。例如:
QString insertSql = QString("INSERT INTO `mmr` VALUES (NULL,'%1','%2','%3','%4')")
.arg("musictest").arg("albumtest").arg("timetest").arg("datetest");
QSqlQuery query(insertSql, db);
这还允许您在尝试运行调试器之前验证调试器中是否有正确构造的sql语句在此之后,您可以调用exec()并将结果存储在bool中(正如本文中的其他人所提到的)
上面的代码将运行而不会失败。exec()将只返回false,因为它没有任何可以运行sql语句的对象。您可以检查QSqlQuery::exec的返回值吗?您可以执行类似于
boolsuccess=query.exec(…);如果(!success)qDebug()QSqlError(“1”,“无法执行语句”,“没有这样的表:mmr”)“QSQLITE”驱动程序。。。然后使用一些远程主机名?。你甚至都懒得去查一下“ListReor”,哈哈,这是因为我不知道这些事情,^ ^你甚至不认为我能成为初学者!!作为一个新手问问题是可以的,但请不要因为你还没有弄清楚如何正确使用它就说“QSqlQuery不起作用”。好吧,我全错了,我刚刚发现什么是sqlite,我想使用MySql和alwaysdata上托管的数据库谢谢你的帮助
bool checkSuccess = query.exec();