韓改寧 李永鋒 高伊騰



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