Qt MySQL - 创建新表

时间:2015-06-30 14:21:49

标签: c++ mysql qt

我是QT编程新手所以我正在尝试简单的MySQL操作(连接,构建数据库,构建表...)

到目前为止我使用了c#,所以我在这里使用了类似的构造(即我将pushButton用于运行代码并在editText arrea中打印出消息)

我的"连接"代码工作得很好,"构建数据库"码, 但是我在创建表格时遇到了麻烦。

  1. 我的工作环境:
    • 赢7
    • QT Creator 3.4.1
    • 基于Qt 5.4.2
    • MySQL @ XAMPP v1.8.3
  2. 我的代码:

    void MainWindow::on_pushButton_2_clicked()
    {
        QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    
        db.setHostName("localhost");
        db.setDatabaseName("myTestDB");
        db.setUserName("root");
        db.setPassword("");
    
        if(db.open())  { ui->textBox->append("Connected..."); db.close(); }
        else ui->textBox->append(db.lastError().text());
    
        QSqlQuery query;
        query.prepare( "CREATE TABLE IF NOT EXISTS myTable (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))" );
        if(query.exec())
        {
            ui->textBox->append("Table created");
        }
        else
        {
            ui->textBox->append("Error");
            ui->textBox->append("MySQL error:" + query.lastError().text());
            ui->textBox->append("MySQL error code:"+ QString::number(query.lastError().number()));
        }
    }
    

    当我运行代码时,我得到了这个回复:
    连接...
    错误
    MySQL错误:
    MySQL错误代码:-1

    因此MySQL错误为空,MySQL错误代码为-1
    我还直接运行SQL代码来检查查询错误 感谢您提供任何帮助和建议。

1 个答案:

答案 0 :(得分:1)

连接数据库后直接关闭数据库。

您需要将db交给查询。

更改

if(db.open())  { ui->textBox->append("Connected..."); db.close(); }

QSqlQuery query;

if(db.open())  { ui->textBox->append("Connected..."); }

QSqlQuery query(db);

然后在查询后关闭数据库。

这是您的第一个问题:欢迎使用StackOverflow;)