一、數(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ù)庫也是應(yīng)用程序的重要部分,一個(gè)完整的應(yīng)用程序幾乎都包含數(shù)據(jù)庫。
當(dāng)前主流的數(shù)據(jù)庫有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle。
Sqlite是一款輕型的數(shù)據(jù)庫,它的設(shè)計(jì)目標(biāo)是嵌入式,方便我們使用。
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分為不同的層:
·驅(qū)動層
·SQL API層
·用戶接口層
(1)驅(qū)動層
對于Qt是基于C++來實(shí)現(xiàn)的框架,該層主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlDriverPlugin,and QSqlResult。這一層提供了特定數(shù)據(jù)庫和SQL API層之間的底層橋梁。
(2)SQL API層
對于SQL API層提供了數(shù)據(jù)庫的訪問相關(guān)類,其中,QSqlDatabase類進(jìn)行連接,QSqlQuery可以完成與數(shù)據(jù)庫的交互。除此之外,還提供了QSqlError,QSqlField,QSqlIndex,and SQqlRecord類。
(3)用戶接口層
用戶接口層的幾個(gè)類實(shí)現(xiàn)了將數(shù)據(jù)庫中的數(shù)據(jù)鏈接到窗口部件上,這些類是使用模型/視圖框架實(shí)現(xiàn)的,他們是更高層次的抽象,主要包括QSqlQueryModel,QSqlTableModel,and QSqlRelationTableModel。
2、SQLite數(shù)據(jù)庫初識
對于數(shù)據(jù)庫操作流程主要分為:
第一步:在項(xiàng)目管理文件(.pro)中,增加數(shù)據(jù)庫模塊
QT += core gui sql
第二步:查看Qt對數(shù)據(jù)庫的驅(qū)動的類型的支持
QStringList drivers = QSqlDatabase::drivers();//獲取到qt中所支持的數(shù)據(jù)庫驅(qū)動類型
foreach(QString driver,drivers)
{
qDebug() << driver;
}
第三步:連接和打開數(shù)據(jù)庫
db = QSqlDatabase::addDatabase("QSQLITE"); //QSQLITE----他來告訴系統(tǒng),連接的數(shù)據(jù)庫是sqlite3數(shù)據(jù)庫
//連接成功,返回一個(gè)數(shù)據(jù)庫對象(QSqlDatabase)
db.setDatabaseName("test.db"); //設(shè)置數(shù)據(jù)庫名,數(shù)據(jù)庫文件后綴為.db
db.setUserName("admin"); //設(shè)置數(shù)據(jù)庫用戶名
db.setPassword("admin"); //設(shè)置數(shù)據(jù)庫密碼
//如果想要進(jìn)一步操作數(shù)據(jù)庫,那么就必須進(jìn)行數(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)建一次,而其他的操作是可以重復(fù)。
(1)創(chuàng)建表
QSqlQuery query;//在創(chuàng)建該對象時(shí),系統(tǒng)會自動完成跟數(shù)據(jù)庫的關(guān)聯(lián)
//定義一個(gè)創(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);
使用圖形化工具查看的程序結(jié)果:
(2)向數(shù)據(jù)庫表中插入數(shù)據(jù)
插入操作語法:
INSERT INTO TABLE_NAME(column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN)
INSERT INTO ------關(guān)鍵字
TABLE_NAME ------表名
VALUES -------關(guān)鍵字
插入數(shù)據(jù)操作實(shí)例:
//插入操作
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 ---- 關(guān)鍵字
table_name ---- 表名
WHERE ---- 條件的關(guān)鍵字
[condition] ---- 條件表達(dá)式
刪除數(shù)據(jù)操作實(shí)例
//刪除操作
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 ---- 關(guān)鍵字
Table_name ----表名
SET -----關(guān)鍵字
column1 = value1 ------- 要修改的字段名和所對應(yīng)的值
WHERE ----- 條件的關(guān)鍵字
[condition] --- 條件表達(dá)式
-
嵌入式
+關(guān)注
關(guān)注
5125文章
19438瀏覽量
313196 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3884瀏覽量
65584 -
MySQL
+關(guān)注
關(guān)注
1文章
840瀏覽量
27344
發(fā)布評論請先 登錄
相關(guān)推薦
數(shù)據(jù)庫系統(tǒng)是什么?數(shù)據(jù)庫系統(tǒng)概念之數(shù)據(jù)庫設(shè)計(jì)資料免費(fèi)下載

如何進(jìn)行數(shù)據(jù)庫設(shè)計(jì)?數(shù)據(jù)庫設(shè)計(jì)介紹和需求分析及結(jié)構(gòu)設(shè)計(jì)資料概述

如何使用PowerDesigner進(jìn)行數(shù)據(jù)庫靜態(tài)結(jié)構(gòu)設(shè)計(jì)?詳細(xì)資料概述

數(shù)據(jù)庫靜態(tài)結(jié)構(gòu)如何設(shè)計(jì)?詳細(xì)資料任務(wù)和方法說明

數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)庫設(shè)計(jì)

數(shù)據(jù)庫設(shè)計(jì)的七大知識點(diǎn)總結(jié)詳細(xì)資料免費(fèi)下載

數(shù)據(jù)庫學(xué)習(xí)入門資料之如何進(jìn)行數(shù)據(jù)庫設(shè)計(jì)

數(shù)據(jù)庫學(xué)習(xí)入門資料之數(shù)據(jù)庫的概念結(jié)構(gòu)詳細(xì)資料概述

數(shù)據(jù)庫概念結(jié)構(gòu)是如何設(shè)計(jì)的概念結(jié)構(gòu)設(shè)計(jì)資料概述

數(shù)據(jù)庫的設(shè)計(jì)概念總結(jié)

數(shù)據(jù)庫設(shè)計(jì)開發(fā)案例教程之數(shù)據(jù)庫設(shè)計(jì)的資料介紹

Qt學(xué)習(xí)筆記之數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)2

Qt學(xué)習(xí)筆記之數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)5

Qt學(xué)習(xí)筆記之數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)6

Qt學(xué)習(xí)筆記之數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)7

評論