將MYSQL資料顯示在QT的tablewidget中/將QT中的資料儲存到MYSQL資料庫中

Jessica_1409573408發表於2020-10-07

將MYSQL資料顯示在QT的tablewidget中/將QT中的資料儲存到MYSQL資料庫中

(1)資料庫設定

#include <QSqlDatabase>
#include <QSqlQuery>

    QSqlDatabase db;
    QSqlQuery query;
    //********資料庫設定***********//
    //建立一個自己的資料庫 然後利用QT與資料庫建立連線
    db = QSqlDatabase::addDatabase("QMYSQL");//使用的資料庫型別 MYSQL
    db.setHostName("localhost");//預設
    db.setPort(3306);//預設
    db.setDatabaseName("test");//資料庫名 需自己在MYSQL建立一個名為test的database
    db.setUserName("root");//使用者名稱 根據安裝MYSQL來
    db.setPassword("root");//密碼  根據安裝MYSQL來

if(db.open())
    {
        qDebug()<<"sucess";
        query=QSqlQuery(db);//將query指令與資料庫繫結
        query.exec("create table fault_data(time varchar(50),test_point_Id varchar(100),reference_value varchar(50),"
                       "threshhold varchar(50),fault_value varchar(50));");//建立資料表
    }
    else {
        qDebug() << "Error:" << db.lastError().text();//輸出無法開啟資料庫的錯誤
    }

(2)將資料存入資料庫中

//將資料存入資料庫中
            query.exec(QString("insert into fault_data(time,test_point_Id,reference_value,threshhold,fault_value)"
                               "values('%1','%2','%3','%4','%5')").arg(ui->fault_tableWidget_4->item(fault_rowcount-1,0)->text())
                       .arg(ui->fault_tableWidget_4->item(fault_rowcount-1,1)->text())
                       .arg(ui->fault_tableWidget_4->item(fault_rowcount-1,2)->text())
                       .arg(ui->fault_tableWidget_4->item(fault_rowcount-1,3)->text())
                       .arg(ui->fault_tableWidget_4->item(fault_rowcount-1,4)->text()));

(3)將資料庫中的資料顯示在TABLEWIDGET中

void MainWindow::on_history_pushButton_clicked()
{
   QString sqlstr="select time,test_point_Id,reference_value,threshhold,fault_value from fault_data;";//查詢語句
   query.prepare(sqlstr);//準備
   int i=0;
   if(query.exec())
   {
       //依次讀取查詢到的記錄
       while(query.next())
       {
           ui->tableWidget_8->setRowCount(i+1);//設定表格行數
           ui->tableWidget_8->setItem(i,0,new QTableWidgetItem(query.value(0).toString()));
           ui->tableWidget_8->item(i,0)->setTextAlignment(Qt::AlignVCenter|Qt::AlignHCenter);

           ui->tableWidget_8->setItem(i,1,new QTableWidgetItem(query.value(1).toString()));
           ui->tableWidget_8->item(i,1)->setTextAlignment(Qt::AlignVCenter|Qt::AlignHCenter);

           ui->tableWidget_8->setItem(i,2,new QTableWidgetItem(query.value(2).toString()));
           ui->tableWidget_8->item(i,2)->setTextAlignment(Qt::AlignVCenter|Qt::AlignHCenter);

           ui->tableWidget_8->setItem(i,3,new QTableWidgetItem(query.value(3).toString()));
           ui->tableWidget_8->item(i,3)->setTextAlignment(Qt::AlignVCenter|Qt::AlignHCenter);

           ui->tableWidget_8->setItem(i,4,new QTableWidgetItem(query.value(4).toString()));
           ui->tableWidget_8->item(i,4)->setTextAlignment(Qt::AlignVCenter|Qt::AlignHCenter);
           i++;
       }
   }
}

使用資料庫可謂是相當的方便,並且速度很快。

相關文章