一、數據庫
1、數據庫概述
2、數據庫操作語句
二、Qt SQL簡介
1、 Qt SQL對數據庫支持
2、SQLite數據庫初識
3、 Qt SQL模塊數據庫類接口
**一、數據庫
**
1、概述
數據庫也是應用程序的重要部分,一個完整的應用程序幾乎都包含數據庫。
當前主流的數據庫有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle。
Sqlite是一款輕型的數據庫,它的設計目標是嵌入式,方便我們使用。
2、數據庫操作語句
語句:
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對數據庫支持
在Qt中,Qt為SQL數據庫提供支持的基本模塊。Qt SQL的API分為不同的層:
·驅動層
·SQL API層
·用戶接口層
(1)驅動層
對于Qt是基于C++來實現的框架,該層主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlDriverPlugin,and QSqlResult。這一層提供了特定數據庫和SQL API層之間的底層橋梁。
(2)SQL API層
對于SQL API層提供了數據庫的訪問相關類,其中,QSqlDatabase類進行連接,QSqlQuery可以完成與數據庫的交互。除此之外,還提供了QSqlError,QSqlField,QSqlIndex,and SQqlRecord類。
(3)用戶接口層
用戶接口層的幾個類實現了將數據庫中的數據鏈接到窗口部件上,這些類是使用模型/視圖框架實現的,他們是更高層次的抽象,主要包括QSqlQueryModel,QSqlTableModel,and QSqlRelationTableModel。
2、SQLite數據庫初識
對于數據庫操作流程主要分為:
第一步:在項目管理文件(.pro)中,增加數據庫模塊
QT += core gui sql
第二步:查看Qt對數據庫的驅動的類型的支持
QStringList drivers = QSqlDatabase::drivers();//獲取到qt中所支持的數據庫驅動類型
foreach(QString driver,drivers)
{
qDebug() << driver;
}
第三步:連接和打開數據庫
db = QSqlDatabase::addDatabase("QSQLITE"); //QSQLITE----他來告訴系統,連接的數據庫是sqlite3數據庫
//連接成功,返回一個數據庫對象(QSqlDatabase)
db.setDatabaseName("test.db"); //設置數據庫名,數據庫文件后綴為.db
db.setUserName("admin"); //設置數據庫用戶名
db.setPassword("admin"); //設置數據庫密碼
//如果想要進一步操作數據庫,那么就必須進行數據庫打開操作
if (!db.open())
{
qDebug()<<"Error failed to open" <<db.lastError();
return false;
}
else
{
qDebug() << "open success";
}
第四步:訪問數據庫
訪問數據庫的操作主要包括:
(1)創建表;
(2)向數據庫表中插入數據;
(3)刪除數據;
(4)更新數據;
(5)查詢數據。
對于數據庫中的表,通常只需要創建一次,而其他的操作是可以重復。
(1)創建表
QSqlQuery query;//在創建該對象時,系統會自動完成跟數據庫的關聯
//定義一個創建表的sql語句 表名:staff 表中的字段:id name age
QString sqlCreate = "create table staff(id integer primary key autoincrement,"
"name varchar(20),"
"age int);";
query.exec(sqlCreate);
使用圖形化工具查看的程序結果:
(2)向數據庫表中插入數據
插入操作語法:
INSERT INTO TABLE_NAME(column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN)
INSERT INTO ------關鍵字
TABLE_NAME ------表名
VALUES -------關鍵字
插入數據操作實例:
//插入操作
QString sqlInset = QString("insert into staff(name,age) values('張三',20);");
if(!query.exec(sqlInset))
{
qDebug() << "insert data error" << db.lastError();
}
(3)刪除數據
數據庫刪除操作:
基本語法:
DELETE FROM table_name WHERE [condition]
DELETE FROM ---- 關鍵字
table_name ---- 表名
WHERE ---- 條件的關鍵字
[condition] ---- 條件表達式
刪除數據操作實例
//刪除操作
QString sqlDelete = QString("DELETE FROM staff where id = 2;");
if(!query.exec(sqlDelete))
{
qDebug() << "delete data error" << db.lastError();
}
(4)更新數據
數據庫更新操作:
基本語法:
UPDATE table_name SET column1 = value1, column2 = value2,...,column = valueN WHERE [condition];
UPDATE ---- 關鍵字
Table_name ----表名
SET -----關鍵字
column1 = value1 ------- 要修改的字段名和所對應的值
WHERE ----- 條件的關鍵字
[condition] --- 條件表達式
-
嵌入式
+關注
關注
5068文章
19021瀏覽量
303322 -
數據庫
+關注
關注
7文章
3766瀏覽量
64276 -
MySQL
+關注
關注
1文章
802瀏覽量
26445
發布評論請先 登錄
相關推薦
評論