《一、QT的前世今生》
《二、QT下載、安裝及問題解決(windows系統(tǒng))》
《三、Qt Creator使用》????
《四、Qt 的第一個demo-CSDN博客》
《五、帶登錄窗體的demo》
《六、新建窗體時,幾種窗體的區(qū)別》?
《七、Qt 信號和槽》?
《八、Qt C++ 畢業(yè)設計》
《九、Qt C++ 數(shù)據(jù)庫開發(fā)》
《十、Qt 操作PDF文件-CSDN博客》
本章節(jié)我們介紹數(shù)據(jù)庫相關的操作,并開發(fā)一個用戶管理的功能,包括用戶的增、刪、改、查。通過本章節(jié),大家可以學會如何使用sqlite數(shù)據(jù)庫,及sqlite數(shù)據(jù)庫操作函數(shù)的封裝,還有動態(tài)調(diào)用窗體、新建窗體的布局等內(nèi)容。
一、在pro文件中加入sql的引用。
二、在全局變量頭文件中,加入對sqliteDb類的聲明
這行代碼 extern sqliteDb dbSqlite 的意思是在global.h中聲明了一個名為 dbSqlite 的外部變量類。關鍵字 extern 表示這個聲明是外部的,即它的定義(分配內(nèi)存空間)將在其他源文件中。
這樣的聲明通常用于在多個源文件之間共享同一個全局變量。在包含這個聲明的源文件中,你不需要為 dbSqlite 分配內(nèi)存空間,只需要告訴編譯器它的存在,并在其他源文件中提供其定義。
在main.cpp源文件中定義這個變量,并初始化打開連接了數(shù)據(jù)庫:
sqliteDb dbSqlite; // 提供外部變量的定義
這樣在另的窗體文件中不需要再聲明及實例化sqliteDb類,dbSqlite 就可以在多個源文件中使用,而且這些源文件共享同一個 dbSqlite 實例。這在大型項目中,多個源文件需要訪問同一個全局變量時很有用??梢员WC本程序和數(shù)據(jù)庫文件的連接唯一性,不會在每一個用到數(shù)據(jù)庫的地方都打開一個連接,這樣會造成資源混亂。
三、數(shù)據(jù)庫操作類sqliteDb
用于與 SQLite 數(shù)據(jù)庫進行交互。包含一些方法和屬性,以便執(zhí)行數(shù)據(jù)庫查詢、插入、更新和刪除等操作。下圖展示包含的基本結(jié)構:
通過將數(shù)據(jù)庫打開、關閉、查詢、插入、更新和刪除等操作封裝成類,主要優(yōu)勢包括:
1.模塊化和結(jié)構清晰: 類的使用使得數(shù)據(jù)庫操作的相關代碼可以被組織成一個模塊,使得代碼結(jié)構更加清晰、模塊化。這有助于降低代碼的復雜性,使得代碼更易讀、易維護。
2.代碼復用: 通過封裝數(shù)據(jù)庫操作到一個類中,可以輕松地在應用程序的不同部分重復使用相同的數(shù)據(jù)庫操作邏輯。這樣可以避免在代碼中多次編寫相同的數(shù)據(jù)庫連接、查詢和更新的代碼,提高了代碼的可重用性。
以下是對sqlite操作類核心代碼的說明
將原生的query對象轉(zhuǎn)換成便于操作的QList> 哈希集合:
四、登錄窗體中數(shù)據(jù)庫的使用
以下這種select 方式 不推薦,只會從一定程度上避免有sql注入漏洞,大家在正式的軟件開發(fā)中需要引起注意。大家在程序中拼寫sql語句時,一定要注意單引號和雙引號的使用區(qū)別,有的同學稍不留神多寫一個單引號,sql語句就不會被執(zhí)行正確。
大家在寫sql語句的時候,如果不太熟悉,可以建議下載一個sqlite數(shù)據(jù)庫的編輯工具,如SQLite Expert
很好用的一個小工具,能更直觀的編輯數(shù)據(jù)庫文件。下載地址:https://download.csdn.net/download/zhouhui1982/88743983
五、用戶管理窗體
別忘了在上邊引用#include "global.h" 因為跟數(shù)據(jù)庫有關的全局變量在此文件中。否則下邊的dbSqlite變量會報錯。
查詢用戶
刪除用戶
修改和新增用戶在另一個窗體frmuseredit中
六、動態(tài)創(chuàng)建及調(diào)用窗體
七、運行效果
文章來源:http://www.zghlxwxcb.cn/news/detail-799566.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-799566.html
到了這里,關于九、Qt C++ 數(shù)據(jù)庫開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!