一、數(shù)據(jù)庫
1、數(shù)據(jù)庫概述
2、數(shù)據(jù)庫操作語句
二、Qt SQL簡介
1、 Qt SQL對數(shù)據(jù)庫支持
2、SQLite數(shù)據(jù)庫初識
3、 Qt SQL模塊數(shù)據(jù)庫類接口
**一、數(shù)據(jù)庫
**
1、概述
數(shù)據(jù)庫也是應用程序的重要部分,一個完整的應用程序幾乎都包含數(shù)據(jù)庫。
當前主流的數(shù)據(jù)庫有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle。
Sqlite是一款輕型的數(shù)據(jù)庫,它的設計目標是嵌入式,方便我們使用。
2、數(shù)據(jù)庫操作語句
語句:
SELECT * FROM menu WHERE id>20
INSERT INTO menu VALUES(102, HELLO)
DELETE FROM menu WHERE name="wj"
UPDATE menu SET name="weijie"
二、Qt SQL簡介
1、Qt SQL對數(shù)據(jù)庫支持
在Qt中,Qt為SQL數(shù)據(jù)庫提供支持的基本模塊。Qt SQL的API分為不同的層:
·驅動層
·SQL API層
·用戶接口層
(1)驅動層
對于Qt是基于C++來實現(xiàn)的框架,該層主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlDriverPlugin,and QSqlResult。這一層提供了特定數(shù)據(jù)庫和SQL API層之間的底層橋梁。
(2)SQL API層
對于SQL API層提供了數(shù)據(jù)庫的訪問相關類,其中,QSqlDatabase類進行連接,QSqlQuery可以完成與數(shù)據(jù)庫的交互。除此之外,還提供了QSqlError,QSqlField,QSqlIndex,and SQqlRecord類。
(3)用戶接口層
用戶接口層的幾個類實現(xiàn)了將數(shù)據(jù)庫中的數(shù)據(jù)鏈接到窗口部件上,這些類是使用模型/視圖框架實現(xiàn)的,他們是更高層次的抽象,主要包括QSqlQueryModel,QSqlTableModel,and QSqlRelationTableModel。
2、SQLite數(shù)據(jù)庫初識
對于數(shù)據(jù)庫操作流程主要分為:
第一步:在項目管理文件(.pro)中,增加數(shù)據(jù)庫模塊
QT += core gui sql
第二步:查看Qt對數(shù)據(jù)庫的驅動的類型的支持
QStringList drivers = QSqlDatabase::drivers();//獲取到qt中所支持的數(shù)據(jù)庫驅動類型
foreach(QString driver,drivers)
{
qDebug() << driver;
}
第三步:連接和打開數(shù)據(jù)庫
db = QSqlDatabase::addDatabase("QSQLITE"); //QSQLITE----他來告訴系統(tǒng),連接的數(shù)據(jù)庫是sqlite3數(shù)據(jù)庫
//連接成功,返回一個數(shù)據(jù)庫對象(QSqlDatabase)
db.setDatabaseName("test.db"); //設置數(shù)據(jù)庫名,數(shù)據(jù)庫文件后綴為.db
db.setUserName("admin"); //設置數(shù)據(jù)庫用戶名
db.setPassword("admin"); //設置數(shù)據(jù)庫密碼
//如果想要進一步操作數(shù)據(jù)庫,那么就必須進行數(shù)據(jù)庫打開操作
if (!db.open())
{
qDebug()<<"Error failed to open" <<db.lastError();
return false;
}
else
{
qDebug() << "open success";
}
第四步:訪問數(shù)據(jù)庫
訪問數(shù)據(jù)庫的操作主要包括:
(1)創(chuàng)建表;
(2)向數(shù)據(jù)庫表中插入數(shù)據(jù);
(3)刪除數(shù)據(jù);
(4)更新數(shù)據(jù);
(5)查詢數(shù)據(jù)。
對于數(shù)據(jù)庫中的表,通常只需要創(chuàng)建一次,而其他的操作是可以重復。
(1)創(chuàng)建表
QSqlQuery query;//在創(chuàng)建該對象時,系統(tǒng)會自動完成跟數(shù)據(jù)庫的關聯(lián)
//定義一個創(chuàng)建表的sql語句 表名:staff 表中的字段:id name age
QString sqlCreate = "create table staff(id integer primary key autoincrement,"
"name varchar(20),"
"age int);";
query.exec(sqlCreate);
使用圖形化工具查看的程序結果:
(2)向數(shù)據(jù)庫表中插入數(shù)據(jù)
插入操作語法:
INSERT INTO TABLE_NAME(column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN)
INSERT INTO ------關鍵字
TABLE_NAME ------表名
VALUES -------關鍵字
插入數(shù)據(jù)操作實例:
//插入操作
QString sqlInset = QString("insert into staff(name,age) values('張三',20);");
if(!query.exec(sqlInset))
{
qDebug() << "insert data error" << db.lastError();
}
(3)刪除數(shù)據(jù)
數(shù)據(jù)庫刪除操作:
基本語法:
DELETE FROM table_name WHERE [condition]
DELETE FROM ---- 關鍵字
table_name ---- 表名
WHERE ---- 條件的關鍵字
[condition] ---- 條件表達式
刪除數(shù)據(jù)操作實例
//刪除操作
QString sqlDelete = QString("DELETE FROM staff where id = 2;");
if(!query.exec(sqlDelete))
{
qDebug() << "delete data error" << db.lastError();
}
(4)更新數(shù)據(jù)
數(shù)據(jù)庫更新操作:
基本語法:
UPDATE table_name SET column1 = value1, column2 = value2,...,column = valueN WHERE [condition];
UPDATE ---- 關鍵字
Table_name ----表名
SET -----關鍵字
column1 = value1 ------- 要修改的字段名和所對應的值
WHERE ----- 條件的關鍵字
[condition] --- 條件表達式
-
嵌入式
+關注
關注
5094文章
19178瀏覽量
307732 -
數(shù)據(jù)庫
+關注
關注
7文章
3848瀏覽量
64691 -
MySQL
+關注
關注
1文章
829瀏覽量
26745
發(fā)布評論請先 登錄
相關推薦
數(shù)據(jù)庫系統(tǒng)是什么?數(shù)據(jù)庫系統(tǒng)概念之數(shù)據(jù)庫設計資料免費下載
![<b class='flag-5'>數(shù)據(jù)庫</b>系統(tǒng)是什么?<b class='flag-5'>數(shù)據(jù)庫</b>系統(tǒng)概念<b class='flag-5'>之</b><b class='flag-5'>數(shù)據(jù)庫</b>設計資料免費下載](https://file.elecfans.com/web1/M00/63/2B/o4YBAFuSHbeAM4RcAACEYh_R_B4674.png)
如何進行數(shù)據(jù)庫設計?數(shù)據(jù)庫設計介紹和需求分析及結構設計資料概述
![如何進行<b class='flag-5'>數(shù)據(jù)庫</b>設計?<b class='flag-5'>數(shù)據(jù)庫</b>設計介紹和需求分析及<b class='flag-5'>結構設計</b>資料概述](https://file.elecfans.com/web1/M00/63/F2/o4YBAFuaKW2AIKpEAARtp-1f0b0708.png)
如何使用PowerDesigner進行數(shù)據(jù)庫靜態(tài)結構設計?詳細資料概述
![如何使用PowerDesigner進行<b class='flag-5'>數(shù)據(jù)庫</b>靜態(tài)<b class='flag-5'>結構設計</b>?詳細資料概述](https://file.elecfans.com/web1/M00/63/F2/o4YBAFuaKoaAXBsrAAF31hRLKdQ387.png)
數(shù)據(jù)庫靜態(tài)結構如何設計?詳細資料任務和方法說明
![<b class='flag-5'>數(shù)據(jù)庫</b>靜態(tài)<b class='flag-5'>結構</b>如何設計?詳細資料任務和方法說明](https://file.elecfans.com/web1/M00/65/96/o4YBAFusiwyAXjCMAAFJJzC3A6g474.png)
數(shù)據(jù)庫教程之如何進行數(shù)據(jù)庫設計
![<b class='flag-5'>數(shù)據(jù)庫</b>教程之如何進行<b class='flag-5'>數(shù)據(jù)庫</b>設計](https://file.elecfans.com/web1/M00/68/C6/pIYBAFvJSIKASWEIAACwgX_ZZeE760.png)
數(shù)據(jù)庫設計的七大知識點總結詳細資料免費下載
![<b class='flag-5'>數(shù)據(jù)庫</b>設計的七大知識點總結詳細資料免費下載](https://file.elecfans.com/web1/M00/68/AF/o4YBAFvJSraAY5LKAAElll_zQAQ598.png)
數(shù)據(jù)庫學習入門資料之如何進行數(shù)據(jù)庫設計
![<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>學習</b>入門資料<b class='flag-5'>之</b>如何進行<b class='flag-5'>數(shù)據(jù)庫</b>設計](https://file.elecfans.com/web1/M00/69/11/o4YBAFvRgLKAFMKHAAAhnoW_1Ms060.png)
數(shù)據(jù)庫學習入門資料之數(shù)據(jù)庫的概念結構詳細資料概述
![<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>學習</b>入門資料<b class='flag-5'>之</b><b class='flag-5'>數(shù)據(jù)庫</b>的概念<b class='flag-5'>結構</b>詳細資料概述](https://file.elecfans.com/web1/M00/69/2C/pIYBAFvRhBWACVm0AAB4a7P1L3E013.png)
數(shù)據(jù)庫概念結構是如何設計的概念結構設計資料概述
![<b class='flag-5'>數(shù)據(jù)庫</b>概念<b class='flag-5'>結構</b>是如何設計的概念<b class='flag-5'>結構設計</b>資料概述](https://file.elecfans.com/web1/M00/69/37/pIYBAFvSshOADBADAACF2aJJrfw747.png)
數(shù)據(jù)庫的設計概念總結
![<b class='flag-5'>數(shù)據(jù)庫</b>的設計概念總結](https://file.elecfans.com/web1/M00/81/A3/o4YBAFw1v1yAMmUZAAD6z3tK1rA443.png)
數(shù)據(jù)庫設計開發(fā)案例教程之數(shù)據(jù)庫設計的資料介紹
![<b class='flag-5'>數(shù)據(jù)庫</b>設計開發(fā)案例教程之<b class='flag-5'>數(shù)據(jù)庫</b>設計的資料介紹](https://file.elecfans.com/web1/M00/82/39/pIYBAFw4EO-AT-8JAAEaift3s7Y453.png)
Qt學習筆記之數(shù)據(jù)庫結構設計2
![<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'>數(shù)據(jù)庫</b><b class='flag-5'>結構設計</b>2](https://file.elecfans.com/web2/M00/91/DE/poYBAGPu8w6AQpYHAAAFxq95C4E520.jpg)
評論