韓改寧 李永鋒 高伊騰
摘 要:由于嵌入式設備中可使用的資源相對較少,針對嵌入式系統(tǒng)下的數(shù)據(jù)庫設計問題,利用Qt和MySQL實現(xiàn)數(shù)據(jù)庫開發(fā),從而解決數(shù)據(jù)庫大,占用資源多的問題。Qt提供的QtSql模塊實現(xiàn)Qt數(shù)據(jù)庫應用程序的關聯(lián),采用MySQL輕型數(shù)據(jù)庫,支持Windows和Linux等操作系統(tǒng),同時提供ODBC 接口。利用Qt開發(fā)平臺,通過Qt中QSql模塊及相關數(shù)據(jù)庫驅(qū)動,創(chuàng)建面向應用的數(shù)據(jù)庫系統(tǒng)開發(fā),并通過SQL語句進行數(shù)據(jù)庫交互操作,然后通過交叉編譯器,將其移植到ARM Cortex-A8開發(fā)板上,從而實現(xiàn)嵌入式下的數(shù)據(jù)庫系統(tǒng)的設計與開發(fā)。
關鍵詞:嵌入式;Qt;QtSQL模塊;MySQL數(shù)據(jù)庫;ARM Cortex-A8
Abstract:Because resources which can be used are relatively few in the embedded devices. For embedded system, a database is designed in this paper, by using Qt and MYSQL, to solve problems of large volume of database and occupying more resources. QtSql module provides a seamless connection to database and Qt applications, MYSQL is used for lightweight database, to support Windows and Linux operating systems and provide ODBC interface. In the paper, Qt development platform is used to create an application database system development through QtSql modules and related database driver, and interact with the database through SQL statements. Then, it is compiled through cross-compiler, and transplanted to ARM Cortex-A8 development board in order to realize the development and design of the database system in embedded environment.
Key words:embedded;Qt;QtSQL model;MYSQL database;ARM Cortex-A8
0 引言
數(shù)據(jù)庫技術是計算機數(shù)據(jù)處理與信息管理系統(tǒng)的核心,研究和管理的對象是數(shù)據(jù),所以數(shù)據(jù)庫技術是對數(shù)據(jù)的統(tǒng)一組織和管理。一般在嵌入式開發(fā)中,嵌入式數(shù)據(jù)庫應用到嵌入式設備中,要求占用內(nèi)存小、運行速度快、執(zhí)行效率高等,這樣才可以降低開設備成本,提高設備效能。
由于Qt是一個跨平臺的C++圖形用戶界面應用程序設計框架,在建立好的Qt環(huán)境下,在建立基于ARM開發(fā)板的交叉編譯環(huán)境,開發(fā)出可以移植到ARM開發(fā)板上的應用程序。
1 Qt中的SQL數(shù)據(jù)庫
Qt中提供了不同的數(shù)據(jù)庫接口,為不同層次的用戶提供了豐富的數(shù)據(jù)庫操作類。QtSql模塊由驅(qū)動層、SQL接口層和用戶接口層3部分組成,各層次功能如表1所示。
2 Qt中創(chuàng)建數(shù)據(jù)庫
2.1 創(chuàng)建連接
通過驅(qū)動層或者SQL接口層提供的類來訪問數(shù)據(jù)庫,首先創(chuàng)建并打開數(shù)據(jù)庫連接。在應用程序中,可以向相同的數(shù)據(jù)庫創(chuàng)建多個連接。
2.2 使用SQL語句操作
Qt中支持SQL語句。有兩種方式創(chuàng)建數(shù)據(jù)庫表,一種是利用mySql Comman LineClient端,執(zhí)行SQL語句建立;一種是使用SQL模型類,利用Qt提供MVC模式,比如QSqlQueryModel和QSqlTableModel類等進行數(shù)據(jù)庫操作,而且可以將結(jié)果在表格中顯示出來。
2.2.1 使用SQL語句操作數(shù)據(jù)庫
數(shù)據(jù)庫連接成功后,首先要創(chuàng)建student數(shù)據(jù)庫表, 包括學生的學號、姓名、性別、年齡、學院、平均成績。
(1) 利用QSqlQuery類提供SQL語句操作:
然后向表中插入記錄,利用SQL語句操作:
query.exec("insert into student values (1001, ‘王浩,‘男,20,‘計算機學院,90)");
query.exec("insert into student values (1002,‘張紅,‘女,20,‘計算機學院,92)");
(2) 利用MySql命令行方式實現(xiàn)數(shù)據(jù)庫表的創(chuàng)建,如圖2所示。
(a) 查詢創(chuàng)建的數(shù)據(jù)庫
(b) 查詢該數(shù)據(jù)庫下包含的數(shù)據(jù)庫表
(c) 顯示數(shù)據(jù)庫表結(jié)構
(d) 顯示數(shù)據(jù)庫表數(shù)據(jù)
最后,對數(shù)據(jù)庫表進行遍歷操作,利用SQL語句,如插入記錄、顯示表記錄、查詢、定位等。
第一種方法不需要單獨配置其他數(shù)據(jù)庫,直接在Qt開發(fā)平臺上,對數(shù)據(jù)庫表進行創(chuàng)建和操作。該方法適合于Qt 下的所以數(shù)據(jù)庫操作。
第二種方法是在Qt平臺之外,安裝MySql數(shù)據(jù)庫,然后通過CMD命令的方式創(chuàng)建數(shù)據(jù)表結(jié)構及添加表數(shù)據(jù)庫。該方法對數(shù)據(jù)庫表操作直觀,但是需要安裝程序。
2.2.2 Qt實現(xiàn)數(shù)據(jù)庫表的顯示
Qt中提供了更簡單的數(shù)據(jù)庫操作和數(shù)據(jù)顯示模型,基于MVC(Model-View-Control)架構,Qt下提供多種Model模型和View視圖方式,在此,通過兩個Model模型進行數(shù)據(jù)表管理。
(1) QSqlQueryModel類對數(shù)據(jù)表顯示
創(chuàng)建QSqlQueryModel的實例modelQuery,再利用SQL語句查詢student表的內(nèi)容,再建立了一個視圖view,通過視圖的setModel方法添加模型。
3 學生信息管理數(shù)據(jù)庫設計
按照上述數(shù)據(jù)庫連接與SQL語句操作方法,利用Qt中QSqlTableModel類模型對數(shù)據(jù)庫進行增加、刪除、修改及查詢等操作。登錄界面如圖3所示,數(shù)據(jù)庫主界面如圖4所示,數(shù)據(jù)庫表操作如圖5-圖7所示。
4 數(shù)據(jù)庫系統(tǒng)移植
首先,在ARM Cortex-A8開發(fā)板上配置環(huán)境,移植操作?系統(tǒng),然后通過交叉編譯器arm_linux_gcc進行編譯,最后,將交叉編譯后生成的可執(zhí)行文件移植到開發(fā)板上并運行。學生信息管理平臺效果如圖8所示。
5 總結(jié)
針對嵌入式系統(tǒng)下的數(shù)據(jù)庫設計問題,本設計利用Qt和MySQL實現(xiàn)數(shù)據(jù)庫開發(fā),從而解決數(shù)據(jù)庫大,占用資源多的問題。通過Qt提供的QtSql模塊實現(xiàn)數(shù)據(jù)庫關聯(lián),利用SQL語句實現(xiàn)數(shù)據(jù)庫表的創(chuàng)建和添加記錄,通過QSqlQueryModel類和QSqlTableModel類兩種模型進行數(shù)據(jù)管理,采用QTableView類視圖實現(xiàn)數(shù)據(jù)庫表的顯示,最后,通過交叉編譯,并移植到ARM Cortex-A8開發(fā)板上。該設計方案簡單易操作,占用資源較少,適合嵌入式系統(tǒng)下的小型數(shù)據(jù)庫系統(tǒng)開發(fā)。
參考文獻
[1] 張治國,董西廣.基于Qt平臺的數(shù)據(jù)庫編程[J].福建電腦,2011 (3):165-167.
[2] 孔翔鳴. Qt本地數(shù)據(jù)庫開發(fā)[J]. 電腦知識與技術, 2017, 13(10):4-5.
[3] 梁隆愷, 韓改寧, 王曉妮. 嵌入式Qt下的數(shù)據(jù)庫程序設計與開發(fā)[J]. 辦公自動化, 2014(21):58-61.
[4] 蔡志明,陸川富.精通Qt4編程[M]. 第2版.北京:電子工業(yè)出版社,2011.
[5] 閔孝忠, 朱林立. QT環(huán)境下通用數(shù)據(jù)庫組件技術的研究與設計[J]. 計算機應用與軟件, 2015, 32(12):231-234.
[6] 毛成果.采煤機搖臂便攜式數(shù)據(jù)采集及分析系統(tǒng)研究[D]. 徐州:中國礦業(yè)大學, 2014.
[7] 郭琳. 一種多功能教學輔助系統(tǒng)的軟件設計[D]. 哈爾濱:黑龍江大學, 2018.
[8] 瞿帥,張曉麗,朱程浩,等.機載激光雷達森林資源調(diào)查系統(tǒng)的設計與試驗[J].西北林學院學報, 2018, 33(4):175-182.
[9] 林曉斌, 林晨. 基于ARM9與QT的多功能智能車載系統(tǒng)研發(fā)[J].赤峰學院學報(自然科學版), 2018(3). 92-94.
(收稿日期:2019.09.05)