精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Qt學習筆記之數據庫結構設計5

jf_78858299 ? 來源:紛紜雜談 ? 作者:CY_CHEN ? 2023-02-17 13:56 ? 次閱讀

一、QSqlQueryModel模型基本使用

//使用QSqlQueryModel來高效地查詢數據庫操作
//1、創建QSqlQueryModel對象,并設置相關的表頭信息
QSqlQueryModel* model = new QSqlQueryModel;
//執行sql語句,將查詢出來的結果轉換成model對象
model->setQuery("select name ,age,address,salary from staff");
//根據需求設置表頭信息
model->setHeaderData(0,Qt::Horizontal,"Name");
model->setHeaderData(1,Qt::Horizontal,"Age");
model->setHeaderData(2,Qt::Horizontal,"Address");
model->setHeaderData(3,Qt::Horizontal,"Salary");
//給ui控件設置一個模型
QTableView* view = new QTableView(ui->tableView);


view->setFixedSize(QSize(this->width(),this->height()));
view->setModel(model);//相當于將數據聯動到UI控件上


//將view顯示
view->show();

運行后,頁面就可以顯示出數據庫表格相關信息了。

圖片

二、QSqlQueryModel可編輯接口重寫

默認情況下,QSqlQueryModel模型是只讀的。要使它具有可讀寫性,必須繼承它并重新實現setData()和flags()。另一種選擇是使用QSqlTableModel,它提供了基于單個數據表的讀寫模型。

接口一:

[virtual]bool setData(const QModelIndex &index,const QVariant &value,int role = Qt::EditRole)

接口二:

[override virtual]Qt::ItemFlags flags(const QModelIndex &index)const

創建一個新的類用于編輯

editquerymodel.h

#ifndef EDITQUERYMODEL_H
#define EDITQUERYMODEL_H
#include 
#include 


class editQueryModel : public QSqlQueryModel
{
public:
    editQueryModel();


    //重寫基類的虛函數
    bool setData(const QModelIndex &index,const QVariant &value,int role = Qt::EditRole);
    Qt::ItemFlags flags(const QModelIndex &index)const;


private:
    //自定義接口函數
    //更新數據
    void refresh();


    //根據需求來定義修改表中的內容的接口
    bool setName(int useId,const QString& name);
};


#endif // EDITQUERYMODEL_H

editquerymodel.c

#include "editquerymodel.h"


editQueryModel::editQueryModel()
{


}


bool editQueryModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
    //1、判斷是否為有效列    員工表--id 用戶名 年齡 地址 薪資
    if(index.column() < 1 || index.column() > 4)
        return false;


    //獲取列所對應的id
    QModelIndex prinmaryIndex = QSqlQueryModel::index(index.row(),0);
    int id = this->data(prinmaryIndex).toInt();


    //在修改行時,將數據清除,把整個model清空
    this->clear();
    bool ok;
    //根據需求修改所對應的列
    if(index.column() == 1)
    {
        ok = setName(id,value.toString());
    }


    //刷新數據
    refresh();


    return ok;
}


Qt::ItemFlags editQueryModel::flags(const QModelIndex &index) const
{
    //1、獲取當前單元格的編輯狀態
    Qt::ItemFlags flag = QSqlQueryModel::flags(index);


    //2、給現有的標志增加一個可編輯的標志
//    if(index.column()==1)
    flag = flag | Qt::ItemIsEditable;//給它設置一個可編輯的狀態


    return flag;
}


void editQueryModel::refresh()
{
    //相當于將數據庫的數據查詢出來,轉換成一個model
    this->setQuery("select * from staff");
    this->setHeaderData(0,Qt::Horizontal,"ID");
    this->setHeaderData(1,Qt::Horizontal,"Name");
    this->setHeaderData(2,Qt::Horizontal,"Age");
    this->setHeaderData(3,Qt::Horizontal,"Address");
    this->setHeaderData(4,Qt::Horizontal,"Salary");
}


bool editQueryModel::setName(int useId, const QString &name)
{
    //相當于一個刷新的操作
    QSqlQuery query;


    query.prepare("update staff set name = ? where id = ?");


    query.addBindValue(name);
    query.addBindValue(useId);
    return query.exec();
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    760

    瀏覽量

    44078
  • 數據庫
    +關注

    關注

    7

    文章

    3766

    瀏覽量

    64276
  • SQlite
    +關注

    關注

    0

    文章

    78

    瀏覽量

    15909
收藏 人收藏

    評論

    相關推薦

    數據庫系統是什么?數據庫系統概念數據庫設計資料免費下載

      什么是概念結構設計1.將需求分析得到的用戶需求抽象為信息結構即概念模型的過程就是概念結構設計2.概念結構是各種數據模型的共同基礎,它比
    發表于 09-07 14:34 ?1次下載
    <b class='flag-5'>數據庫</b>系統是什么?<b class='flag-5'>數據庫</b>系統概念<b class='flag-5'>之</b><b class='flag-5'>數據庫</b>設計資料免費下載

    如何進行數據庫設計?數據庫設計介紹和需求分析及結構設計資料概述

    數據庫設計的任務是指根據需求研制數據庫結構并應用 數據庫的過程。數據庫設計內容包括數據庫
    發表于 09-13 17:05 ?0次下載
    如何進行<b class='flag-5'>數據庫</b>設計?<b class='flag-5'>數據庫</b>設計介紹和需求分析及<b class='flag-5'>結構設計</b>資料概述

    如何使用PowerDesigner進行數據庫靜態結構設計?詳細資料概述

    把用戶需求抽象為概念模型即為概念結構設計。 概念模型除了要求能反映客觀世界并且易于理解外,還要求其易于向數據模型(如關系模型)轉化。 概念模型獨立于具體的數據庫系統,是整個數據庫
    發表于 09-13 17:05 ?0次下載
    如何使用PowerDesigner進行<b class='flag-5'>數據庫</b>靜態<b class='flag-5'>結構設計</b>?詳細資料概述

    數據庫靜態結構如何設計?詳細資料任務和方法說明

    任務:實現數據庫設計新奧爾良方法中概念結構設計和邏輯結構設計
    發表于 09-27 15:32 ?1次下載
    <b class='flag-5'>數據庫</b>靜態<b class='flag-5'>結構</b>如何設計?詳細資料任務和方法說明

    數據庫教程之如何進行數據庫設計

    本文檔的主要內容詳細介紹的是數據庫教程之如何進行數據庫設計內容包括了:1 數據庫設計概述 ,2 數據庫需求分析 ,3 數據庫
    發表于 10-19 10:41 ?21次下載
    <b class='flag-5'>數據庫</b>教程之如何進行<b class='flag-5'>數據庫</b>設計

    數據庫設計的七大知識點總結詳細資料免費下載

    本文檔的主要內容詳細介紹的是數據庫設計的七大知識點總結包括了:1 數據庫設計概述2 需求分析3 概念結構設計4 邏輯結構設計5
    發表于 10-19 10:41 ?0次下載
    <b class='flag-5'>數據庫</b>設計的七大知識點總結詳細資料免費下載

    數據庫學習入門資料如何進行數據庫設計

    本文檔的主要內容詳細介紹的是數據庫學習入門資料如何進行數據庫設計主要內容包括了:數據庫系統設計的1 概述2 需求分析3 概念設計4 邏輯設
    發表于 10-25 16:29 ?14次下載
    <b class='flag-5'>數據庫</b><b class='flag-5'>學習</b>入門資料<b class='flag-5'>之</b>如何進行<b class='flag-5'>數據庫</b>設計

    數據庫學習入門資料數據庫的概念結構詳細資料概述

    什么是概念結構設計 將需求分析得到的用戶需求抽象為信息結構即概念模型的過程就是概念結構設計 概念結構是各種數據模型的共同基礎,它比
    發表于 10-25 16:29 ?0次下載
    <b class='flag-5'>數據庫</b><b class='flag-5'>學習</b>入門資料<b class='flag-5'>之</b><b class='flag-5'>數據庫</b>的概念<b class='flag-5'>結構</b>詳細資料概述

    數據庫概念結構是如何設計的概念結構設計資料概述

    本文檔的主要內容詳細介紹的是數據庫概念結構是如何設計的概念結構設計資料概述主要內容包括了:1 概念結構2 概念結構設計的方法與步驟3
    發表于 10-26 11:49 ?22次下載
    <b class='flag-5'>數據庫</b>概念<b class='flag-5'>結構</b>是如何設計的概念<b class='flag-5'>結構設計</b>資料概述

    數據庫的設計概念總結

    本文檔的主要內容詳細介紹的是數據庫的設計概念總結主要內容包括了:1.數據庫設計概述,2.需求分析,3.概念結構設計,4.邏輯結構設計,5.
    發表于 01-09 17:29 ?13次下載
    <b class='flag-5'>數據庫</b>的設計概念總結

    數據庫設計開發案例教程之數據庫設計的資料介紹

    本文檔的主要內容詳細介紹的是數據庫設計開發案例教程之數據庫設計的資料介紹主要內容包括了:1 數據庫設計概述,2 需求分析,3 概念結構設計,4 邏輯
    發表于 01-11 11:20 ?17次下載
    <b class='flag-5'>數據庫</b>設計開發案例教程之<b class='flag-5'>數據庫</b>設計的資料介紹

    Qt學習筆記數據庫結構設計1

    數據庫也是應用程序的重要部分,一個完整的應用程序幾乎都包含數據庫。 當前主流的數據庫有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle。 Sqlite是一款輕型的
    的頭像 發表于 02-17 11:25 ?740次閱讀
    <b class='flag-5'>Qt</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>數據庫</b><b class='flag-5'>結構設計</b>1

    Qt學習筆記數據庫結構設計2

    數據庫也是應用程序的重要部分,一個完整的應用程序幾乎都包含數據庫。 當前主流的數據庫有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle。 Sqlite是一款輕型的
    的頭像 發表于 02-17 11:25 ?521次閱讀
    <b class='flag-5'>Qt</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>數據庫</b><b class='flag-5'>結構設計</b>2

    Qt學習筆記數據庫結構設計6

    Qt中,Qt為SQL數據庫提供支持的基本模塊。Qt SQL的API分為不同的層: ·驅動層 ·SQL API層 ·用戶接口層
    的頭像 發表于 02-17 13:57 ?501次閱讀
    <b class='flag-5'>Qt</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>數據庫</b><b class='flag-5'>結構設計</b>6

    Qt學習筆記數據庫結構設計7

    Qt中,Qt為SQL數據庫提供支持的基本模塊。Qt SQL的API分為不同的層: ·驅動層 ·SQL API層 ·用戶接口層
    的頭像 發表于 02-17 13:57 ?520次閱讀
    <b class='flag-5'>Qt</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>數據庫</b><b class='flag-5'>結構設計</b>7