国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QSqlDatabase(2)實例,QTableView顯示數(shù)據(jù)庫表數(shù)據(jù)

這篇具有很好參考價值的文章主要介紹了QSqlDatabase(2)實例,QTableView顯示數(shù)據(jù)庫表數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

1、實現(xiàn)的功能

2、具體的代碼實現(xiàn)


前言

想了解QSqlDatabase基本知識的,以及增刪改查的用法,可以瀏覽上一篇文章:

QSqlDatabase(1)基本接口,以及(增刪改除)的簡單實例_Ivy_belief的博客-CSDN博客

這篇主要實戰(zhàn),寫了一個數(shù)據(jù)動態(tài)庫。

1、實現(xiàn)的功能

先來看看要實現(xiàn)的頁面信息:

QSqlDatabase(2)實例,QTableView顯示數(shù)據(jù)庫表數(shù)據(jù),QT,數(shù)據(jù)庫,qt,c++,oracle

?數(shù)據(jù)庫的動態(tài)庫主要實現(xiàn)了:數(shù)據(jù)庫的增、刪、改、查的功能。

(1)增加數(shù)據(jù)的功能;

(2)刪除數(shù)據(jù)的功能;

(3)修改數(shù)據(jù)的功能;

(4)查找數(shù)據(jù)的功能;

(5)用QTableView顯示數(shù)據(jù)庫表數(shù)據(jù);

(6)直接執(zhí)行sql語句的功能;

2、具體的代碼實現(xiàn)

數(shù)據(jù)庫測試工具GUI頁面的主要功能:

(1)增加數(shù)據(jù):

bool RobotDataBaseManager::addData2DB(string strOrderId, string strEntry, string strMoney, string strPlate, string strType, string strWeight)
{
    if (isOrderIdExist(strOrderId))
        return false;

    QString orderId = QString::fromStdString(strOrderId);
    QString entry = QString::fromStdString(strEntry);
    QString money = QString::fromStdString(strMoney);
    QString plate = QString::fromStdString(strPlate);
    QString type = QString::fromStdString(strType);
    QString weight = QString::fromStdString(strWeight);

    QSqlQuery query;
    QString sql = "INSERT INTO orderData (orderId, entry, money, plate, type, weight) VALUES (:orderId, :entry, :money, :plate, :type, :weight);";

    query.prepare(sql);
    query.bindValue(":orderId", orderId);
    query.bindValue(":entry", entry);
    query.bindValue(":money", money);
    query.bindValue(":plate", plate);
    query.bindValue(":type", type);
    query.bindValue(":weight", weight);

    if (!query.exec())
    {
        qDebug()<<tr("訂單Id %1 ,加入緩存失?。?2").arg(orderId).arg(query.lastError().text());
        return false;
    }
    qDebug()<<tr("訂單Id %1 已加入緩存").arg(orderId);

    return true;
}

(2)刪除數(shù)據(jù)的功能;

bool RobotDataBaseManager::DeleteDataById(string strOrderId)
{
    qDebug() << "RobotDataBaseManager::DeleteDataById: " << QString::fromStdString(strOrderId);

    QString orderId = QString::fromStdString(strOrderId);

    QSqlQuery query;
    QString sql = "DELETE FROM orderData WHERE orderId=:orderId;";
    query.prepare(sql);
    query.bindValue(":orderId", orderId);
    if (!query.exec())
    {
        qDebug() << "into DeleteDataById ERROR: " << query.lastError().text();
        return false;
    }

    if(m_mutex4OrderId.tryLock(1*1000)==false)
        return false;

    m_curOrderId = orderId;
    m_mutex4OrderId.unlock();

    return true;
}

(3)修改數(shù)據(jù)的功能;

bool RobotDataBaseManager::UpdateDataById(string strOrderId, string strEntry, string strMoney, string strPlate, string strType, string strWeight)
{
    if (!isOrderIdExist(strOrderId))
        return false;

    QString orderId = QString::fromStdString(strOrderId);
    QString entry = QString::fromStdString(strEntry);
    QString money = QString::fromStdString(strMoney);
    QString plate = QString::fromStdString(strPlate);
    QString type = QString::fromStdString(strType);
    QString weight = QString::fromStdString(strWeight);

    qDebug()<< "orderId: " << orderId;
    qDebug()<< "entry: " << entry;
    qDebug()<< "money: " << money;
    qDebug()<< "plate: " << plate;
    qDebug()<< "type: " << type;
    qDebug()<< "weight: " << weight;

    QSqlQuery query;
    QString sql = "UPDATE orderData SET entry = :entry, money = :money, plate = :plate, type = :type, weight = :weight WHERE orderId=:orderId;";
    query.prepare(sql);

    query.bindValue(":orderId", orderId);
    query.bindValue(":entry", entry);
    query.bindValue(":money", money);
    query.bindValue(":plate", plate);
    query.bindValue(":type", type);
    query.bindValue(":weight", weight);

    if (!query.exec())
    {
        qDebug() << "UpdateDataById ERROR: " << query.lastError().text();
        return false;
    }

    if(m_mutex4OrderId.tryLock(1*1000)==false)
        return false;

    m_curOrderId = orderId;
    m_mutex4OrderId.unlock();

    return true;
}

(4)查找數(shù)據(jù)的功能;

bool RobotDataBaseManager::getDataById(string strOrderId, string& strEntry, string& strMoney, string& strPlate, string& strType, string& strWeight)
{
    qDebug() << "[數(shù)據(jù)庫]:getDataById 查詢所有數(shù)據(jù): 開始~~~~~~~~~~~~~~~~~";

    QString orderId = QString::fromStdString(strOrderId);

    QSqlQuery query;
    QString sql = "SELECT * FROM orderData WHERE orderId=:orderId;";
    query.prepare(sql);
    query.bindValue(":orderId", orderId);

    if (!query.exec())
    {
        qDebug() << "into getDataById ERROR: " << query.lastError().text();
        return false;
    }

    while (query.next())
    {
        QString orderId = query.value("orderId").toString();

        qDebug() << "取得1條訂單緩存數(shù)據(jù): " << orderId;
        if (!orderId.isEmpty())
        {
            strEntry = query.value("entry").toString().toStdString();
            strMoney = query.value("money").toString().toStdString();
            strPlate = query.value("plate").toString().toStdString();
            strType = query.value("type").toString().toStdString();
            strWeight = query.value("weight").toString().toStdString();
        }
    }

    query.exec("SELECT * FROM orderData");

    qDebug() << "[數(shù)據(jù)庫]:SELECT * FROM orderData:";

    while (query.next())
    {
        // 讀取字段值
        QString name = query.value("entry").toString();
        QString money = query.value("money").toString();
        QString plate = query.value("plate").toString();
        QString type = query.value("type").toString();
        QString weight = query.value("weight").toString();

        // 輸出結(jié)果
        qDebug() << "entry:" << name << ", money:" << money << ", plate:" << plate << ", type:" << type << ", weight:" << weight;
    }


    qDebug() << "[數(shù)據(jù)庫]:getDataById 查詢所有數(shù)據(jù): 結(jié)束~~~~~~~~~~~~~~~~~";
    return true;
}

(5)用QTableView顯示數(shù)據(jù)庫表數(shù)據(jù);

void RobotDataBaseManager::on_btn_showAll_clicked()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "Connection1");
    db.setDatabaseName("trawe.db"); // 數(shù)據(jù)庫文件名


    if (!db.open())
    {
        qDebug() << "Failed to connect to database 1.";
        return;
    }

    QSqlQuery query(db);
    QString selectQuery = "SELECT * FROM orderData";
    if (!query.exec(selectQuery))
    {
        qDebug() << "Failed to select data from trawe.db.";
        return;
    }

    QSqlTableModel * model = new QSqlTableModel(this,db);
    model->setTable("orderData");
    ui->tableView->setModel(model);
    model->select();

    QStringList tables;
    tables << "id"<< "訂單id" << "入口" << "金額" << "車牌" << "車型" << "重量" << "時間";
    for(int i = 1 ; i < tables.count(); i++)
        model->setHeaderData(i,Qt::Horizontal,tables[i]);//設(shè)置顯示框表頭顯示
    model->setSort(1, Qt::AscendingOrder);//設(shè)置按照第0列排序
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//設(shè)置單元格不可編輯
    ui->tableView->horizontalHeader()->setStretchLastSection(true);//設(shè)置最后一列填充后面表格
    //ui->tableView->setColumnHidden(0,true);//設(shè)置第0行隱藏
    ui->tableView->setColumnWidth(1,100);//設(shè)置列寬,界面看起來更舒適
    ui->tableView->setColumnWidth(2,100);//設(shè)置列寬,界面看起來更舒適
}

(6)直接執(zhí)行sql語句的功能;

/*
(1)INSERT INTO orderData (orderId, entry, money, plate, type, weight) VALUES ("63945", "滘口", "99", "粵A777Q1", "客一", "1800");
(2)UPDATE orderData SET entry = "滘口", money = "99", plate = "粵A777Q1", type = "客一", weight = "客一" WHERE orderId="22834";
(3)DELETE FROM orderData WHERE orderId=1234567;
*/
bool RobotDataBaseManager::queryExec(string strSql)
{
    QString sql = QString::fromStdString(strSql);

    QSqlQuery query;
    query.prepare(sql);
    if (!query.exec())
    {
        qDebug() << " queryExec ERROR: " << query.lastError().text();
        return false;
    }

    qDebug() << "[數(shù)據(jù)庫]: sql 語句執(zhí)行成功: 結(jié)束~~~~~~~~~~~~~~~~~";
    return true;
}

上面基本也涵蓋主要的代碼了。

完整的項目代碼已上傳,需要的可以下載。

QSqlDatabase實現(xiàn)數(shù)據(jù)庫的基本功能,以及QTableView顯示數(shù)據(jù)庫表數(shù)據(jù)資源-CSDN文庫文章來源地址http://www.zghlxwxcb.cn/news/detail-681015.html

到了這里,關(guān)于QSqlDatabase(2)實例,QTableView顯示數(shù)據(jù)庫表數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)庫管理】②實例管理及數(shù)據(jù)庫啟動關(guān)閉

    【數(shù)據(jù)庫管理】②實例管理及數(shù)據(jù)庫啟動關(guān)閉

    用于管理和訪問 database. instance 在啟動階段讀取初始化參數(shù)文件(init parameter files). (parameter file)文本初始化參數(shù)文件 -- 靜態(tài)參數(shù)文件. 1)文本文件,必須通過編輯器修改參數(shù). 2)修改參數(shù)下次重啟實例才生效. 3)pfile參數(shù)文件可以不在database server上. 命名方式: init+SID.ora (system paramet

    2023年04月08日
    瀏覽(28)
  • 數(shù)據(jù)庫單實例升級

    數(shù)據(jù)庫單實例升級

    一、單實例環(huán)境 , 全時長二個半鐘多。詳細(xì)圖文說明到這 下載 1 、停止所有 oracle 相關(guān)進程。 Emctlstop? dbconsole Isqlplusctl? stop Lsnrctl? stop sqlplus /nolog sqlconn /as sysdba Connectedtoanidleinstance. sqlshutdown 然后,冷備份下數(shù)據(jù)庫 cp 2 、metalink搜索下載安裝 p6810189_10204_Linux-x86 [oracle@linux~]c

    2024年02月02日
    瀏覽(20)
  • QTableView大數(shù)據(jù)文件顯示(1000萬行數(shù)據(jù))

    QTableView大數(shù)據(jù)文件顯示(1000萬行數(shù)據(jù))

    參考: (2條消息) QTableWidget大數(shù)據(jù)文件顯示(1000萬行數(shù)據(jù))_江南又舊雨的博客-CSDN博客 讀取文件時間+表格插入數(shù)據(jù)時間? ?需要等待的比較久。 表格后期插入一行數(shù)據(jù)大概需要0.1ms,1000萬行數(shù)據(jù),大概得100s得時間。 參考下文博客中得動態(tài)加載: (2條消息) QTableWidget大數(shù)據(jù)文

    2024年02月07日
    瀏覽(16)
  • 達夢數(shù)據(jù)庫初始化實例

    說明(默認(rèn)值) INI_FILE 初始化文件 dm.ini 存放的路徑 PATH 初始數(shù)據(jù)庫存放的路徑 CTL_PATH 控制文件路徑 LOG_PATH 日志文件路徑 EX

    2024年02月11日
    瀏覽(25)
  • Qt QTableView 實現(xiàn)數(shù)據(jù)改變表格自動刷新

    這里提供一份簡單的代碼示例,實現(xiàn)QTableView實時刷新數(shù)據(jù): 在代碼中,我們首先創(chuàng)建一個QStandardItemModel數(shù)據(jù)模型,并設(shè)置表格的行數(shù)和列數(shù),同時設(shè)置表頭和填充數(shù)據(jù)。然后將數(shù)據(jù)模型綁定到QTableView中,并實現(xiàn)數(shù)據(jù)變化自動刷新的功能。最后顯示QWidget窗口。 在實際開發(fā)中

    2024年02月13日
    瀏覽(129)
  • 大數(shù)據(jù)ClickHouse(五):數(shù)據(jù)庫引擎介紹與實例演示

    大數(shù)據(jù)ClickHouse(五):數(shù)據(jù)庫引擎介紹與實例演示

    文章目錄 數(shù)據(jù)庫引擎介紹與實例演示 一、Ordinary默認(rèn)數(shù)據(jù)庫引擎 二、MySQL數(shù)據(jù)庫引擎

    2024年02月03日
    瀏覽(95)
  • MySQL mysqldump備份數(shù)據(jù)庫(附帶實例)

    數(shù)據(jù)庫的主要作用就是對數(shù)據(jù)進行保存和維護,所以備份數(shù)據(jù)是數(shù)據(jù)庫管理中最常用的操作。為了防止數(shù)據(jù)庫意外崩潰或硬件損傷而導(dǎo)致的數(shù)據(jù)丟失,數(shù)據(jù)庫系統(tǒng)提供了備份和恢復(fù)策略。 保證數(shù)據(jù)安全的最重要的一個措施就是定期的對數(shù)據(jù)庫進行備份。這樣即使發(fā)生了意外,

    2024年02月13日
    瀏覽(21)
  • QT學(xué)習(xí)筆記-開發(fā)環(huán)境編譯Qt MySql數(shù)據(jù)庫驅(qū)動與交叉編譯Qt MySql數(shù)據(jù)庫驅(qū)動

    QT學(xué)習(xí)筆記-開發(fā)環(huán)境編譯Qt MySql數(shù)據(jù)庫驅(qū)動與交叉編譯Qt MySql數(shù)據(jù)庫驅(qū)動

    如果需要在QT程序中實現(xiàn)與MySQL數(shù)據(jù)庫的交互,那么必不可少的一環(huán)就是對Qt MySql數(shù)據(jù)庫驅(qū)動的編譯。 操作系統(tǒng):Windows10 專業(yè)版 64位 Qt版本:Qt 5.15.2 開發(fā)環(huán)境Qt安裝路徑:D:Qt 交叉編譯服務(wù)器:Ubuntu 18.4 交叉編譯服務(wù)器Qt安裝路徑:/opt/Qt 目標(biāo)芯片:rk3568 目標(biāo)平臺:arm64 Qt安裝

    2024年02月11日
    瀏覽(44)
  • 【遠(yuǎn)程連接 多個SQL SERVER數(shù)據(jù)庫實例】

    【遠(yuǎn)程連接 多個SQL SERVER數(shù)據(jù)庫實例】

    在公司電腦上同時安裝了SQL SERVER2012和SQL SERVER2019,分別設(shè)置了不同的實例,現(xiàn)用VPN連接公司電腦上的兩個數(shù)據(jù)庫實例,做一些記錄。 如圖所示,分別有MSSQLSERVER2012與MSSQLSERVER2019兩個不同的實例,分別查看實例對應(yīng)的TCP/IP 為數(shù)據(jù)庫引擎訪問配置 Windows 防火墻 - SQL Server | Micro

    2024年02月07日
    瀏覽(27)
  • 使用JDBC訪問微軟Access數(shù)據(jù)庫實例

    使用JDBC訪問微軟Access數(shù)據(jù)庫實例

    之前有使用ODBC來訪問Access數(shù)據(jù)庫的,但不方便.?? 是否可以使用JDBC訪問, 網(wǎng)上的說法不一, 也很少有實例參考. //?? ??? ?access由于access并不是作為一項服務(wù)運行,所以url的方法對他不適用。? ( 其實這個是不對的. ) //?? ??? ?https://zhuanlan.zhihu.com/p/441219492 //?? ??? ?Access

    2024年02月15日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包