如何在Qt中创建mysql数据库表?

时间:2015-12-03 06:08:39

标签: mysql qt

我想创建表到mysql数据库。我能够成功打开数据库但是包含create table命令的查询不起作用? 如果有人知道,请告诉我,我将不胜感激。

mydb = QSqlDatabase::addDatabase("QMYSQL");
mydb.setDatabaseName("mylogin");

mydb.setUserName("root");
mydb.setPort(3306);
mydb.setHostName("localhost");
mydb.setPassword("");

if(!mydb.open())
{
   qDebug() << "failed" ;
   qDebug() << mydb.lastError().text();
}
QSqlQuery qry;
qry.prepare("CREATE TABLE RSA(name varchar(20);");
if(qry.exec())
{
   QMessageBox msg;
   msg.setText("Data saved");
   msg.exec();
   mydb.close();
   mydb.removeDatabase(QSqlDatabase::defaultConnection);
 }
 else
 {
    QMessageBox msg2;
    msg2.setText("Failed to save data");
    msg2.exec();
    qDebug() << mydb.lastError().text();
 }
}

2 个答案:

答案 0 :(得分:0)

第一:你必须首先检查QSqlQuery :: prepare返回值。以下是签名: bool QSqlQuery :: prepare(const QString&amp; query) 第二:你的连接的mysql autocommit值是什么?如果默认自动提交为0,则必须在查询执行后调用QSqlDatabase :: commit。或者在数据库连接初始化期间将自动提交值设置为1。

答案 1 :(得分:0)

首先,您的SQL语句中存在语法错误,您错过了最后的右括号。

其次,出于您的目的,您不需要准备SQL语句就可以使用它,您只需执行它即可。

QSqlQuery qry;
if(qry.exec("CREATE TABLE RSA(name varchar(20))"))
{
//....