• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Qt本地?cái)?shù)據(jù)庫開發(fā)

      2017-06-05 13:38孔翔鳴
      電腦知識(shí)與技術(shù) 2017年10期
      關(guān)鍵詞:數(shù)據(jù)庫

      孔翔鳴

      摘要:Qt因其易用、易擴(kuò)展、跨平臺(tái)等特性,日漸成為流行的開發(fā)框架,該文通過實(shí)例介紹了在Qt開發(fā)中對(duì)于本地?cái)?shù)據(jù)庫sqlite編程的方法。

      關(guān)鍵詞:Qt;數(shù)據(jù)庫;sqlite

      中圖分類號(hào):TP3

      文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2017)10-0004-02

      Qt是1991年由奇趣科技開發(fā)的跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架,經(jīng)過20多年的發(fā)展完善,以其易用性、易擴(kuò)展性以及跨平臺(tái)等特點(diǎn),日漸成為流行的GUI開發(fā)框架,其完善的架構(gòu)和豐富的組件可以使得程序員主要關(guān)注于業(yè)務(wù)邏輯,而不必過多的將精力和時(shí)間耗費(fèi)在繁瑣復(fù)雜的界面開發(fā)上。在實(shí)際開發(fā)中,大多數(shù)應(yīng)用都需要用到數(shù)據(jù)庫技術(shù)以管理各種信息,Ot為此也提供了相應(yīng)的模塊和組件,使得對(duì)數(shù)據(jù)庫的開發(fā)也變得非常簡單。

      根據(jù)數(shù)據(jù)規(guī)模以及網(wǎng)絡(luò)架構(gòu),數(shù)據(jù)庫大體上分為本地?cái)?shù)據(jù)庫和網(wǎng)絡(luò)數(shù)據(jù)庫兩種,本文主要介紹本地?cái)?shù)據(jù)庫sqlite的開發(fā)方法。在Qt中,通過QtSql模塊提供與平臺(tái)以及數(shù)據(jù)庫種類無關(guān)的數(shù)據(jù)庫接口,該接口通過模型膩圖結(jié)構(gòu)將數(shù)據(jù)庫和用戶界面集成在一起。對(duì)于不同的數(shù)據(jù)庫,Qt使用不同的驅(qū)動(dòng)程序與數(shù)據(jù)庫API進(jìn)行通信,從而為程序員提供統(tǒng)一的開發(fā)接口。在進(jìn)行本地?cái)?shù)據(jù)庫開發(fā)時(shí),使用的是SQLite,對(duì)應(yīng)的驅(qū)動(dòng)程序?yàn)镼SQLITE。

      第一行通過addDatabase("QSQLITE")設(shè)置使用sqlite本地?cái)?shù)據(jù)庫,第二行設(shè)置數(shù)據(jù)庫名為"test.db",如果這個(gè)數(shù)據(jù)庫文件不存在則新建,如果存在則打開。這里的數(shù)據(jù)庫文件名可以通過相對(duì)路徑或絕對(duì)路徑來指定。如果是使用網(wǎng)絡(luò)數(shù)據(jù)庫,則需要額外設(shè)置數(shù)據(jù)庫主機(jī)名、用戶名、密碼等。

      在打開數(shù)據(jù)庫后,主角QSqlQuery便要登場了,這是我們使用頻率最多的一個(gè)類,它提供了直接執(zhí)行任意SQL語句并處理其結(jié)果的功能,常規(guī)數(shù)據(jù)庫管理的增、刪、改、查都可以通過該類完成。下面是一個(gè)完整例子:

      如果我們只需要在代碼中對(duì)數(shù)據(jù)庫進(jìn)行操作并且熟悉SQL語言,那么QsqlQuery就可以基本滿足所有需求了;如果需要進(jìn)一步將數(shù)據(jù)和用戶界面進(jìn)行互動(dòng),比如在表格中顯式查詢結(jié)果,有兩種方式可以完成這個(gè)需求:1.通過代碼將數(shù)據(jù)填入QTableView控件并進(jìn)行相關(guān)管理;2.利用QSqlQueryModel或QSqlTableModel類。QsqlQueryModel/QSqlTableModel類是Qt所提供的一個(gè)高級(jí)界面接口,讓我們直接使用用戶界面來執(zhí)行SQL語句所完成的功能,這可以使得數(shù)據(jù)管理操作更為簡潔,兩個(gè)類的區(qū)別在于:QSqlQueryModel類是只讀的,QSqlT-ableModel類是可以修改表數(shù)據(jù)的。同時(shí),QSqlQueryModel/QSqlTableModel類可以作為QTableView或者QListView的數(shù)據(jù)源,我們可以根據(jù)需要來選擇合適的界面組件。下面是一個(gè)完整的例子:

      例2:

      通過這個(gè)例子我們可以看到,QSqlTableModel模型非常強(qiáng)大也非常易用,無須靜態(tài)sQL語句,就算你不怎么熟悉數(shù)據(jù)庫,也可以利用它進(jìn)行大部分常用的操作。這個(gè)模型提供了緩沖區(qū),可以將所有修改先保存到model中,只有當(dāng)我們執(zhí)行提交修改后,才會(huì)真正寫入數(shù)據(jù)庫。

      QsqlrrableModel類盡管功能強(qiáng)大,但是有一個(gè)“單表”的限制,如果我們的數(shù)據(jù)庫多表之間存在邏輯關(guān)系,QSqITableModel就有點(diǎn)力不從心了,針對(duì)這類需求,Qt提供了QSqlRelationalT-ableModel,這個(gè)類實(shí)際上是QsqlTableM0del的擴(kuò)展,提供了外鍵的支持,利用這個(gè)特性,我們對(duì)數(shù)據(jù)庫的處理便不再局限與單個(gè)表,任何復(fù)雜的邏輯關(guān)系都可以游刃有余地處理了。限于篇幅,不再列舉具體的實(shí)例,讀者可參考上例和Qt的聯(lián)機(jī)文檔學(xué)習(xí)使用。

      以上通過實(shí)例介紹了Qt本地?cái)?shù)據(jù)庫的基本用法,掌握了這項(xiàng)技能,我們?cè)诰唧w開發(fā)中遇到數(shù)據(jù)庫管理的需求時(shí),便無須煩惱于數(shù)據(jù)庫的安裝、配置等等麻煩瑣事,直接利用這些組件關(guān)注于業(yè)務(wù)邏輯即可。當(dāng)然,Qt所提供的數(shù)據(jù)庫功能并不限于以上的介紹,諸如并發(fā)、事務(wù)、網(wǎng)絡(luò)等大型數(shù)據(jù)庫系統(tǒng)所擁有的特性,Qt數(shù)據(jù)庫也完全提供,它值得每一個(gè)c++開發(fā)者將其放入自己的開發(fā)工具箱。

      猜你喜歡
      數(shù)據(jù)庫
      超星數(shù)據(jù)庫錄入證
      本刊加入數(shù)據(jù)庫的聲明
      兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
      國外數(shù)據(jù)庫高被引論文排行TOP10
      國內(nèi)主要期刊數(shù)據(jù)庫
      叶城县| 屏东县| 房山区| 高陵县| 朝阳县| 葫芦岛市| 赤峰市| 班玛县| 汶川县| 温州市| 略阳县| 特克斯县| 泰州市| 湖口县| 定远县| 寿光市| 永川市| 琼中| 平潭县| 马龙县| 涟源市| 上杭县| 西安市| 嘉定区| 南陵县| 富平县| 敦煌市| 黔南| 观塘区| 富裕县| 霍林郭勒市| 盐源县| 富顺县| 江西省| 紫阳县| 建始县| 深水埗区| 固原市| 蓝田县| 靖宇县| 吕梁市|