更新數(shù)據(jù)庫操作實(shí)例
//更新數(shù)據(jù)操作
QString sqlUpdate = QString("update staff set name = '李四' where id= 3;");
if(!query.exec(sqlUpdate))
{
qDebug() << "update data error" << db.lastError();
}
(5)查詢數(shù)據(jù)
查詢操作語法:
SELECT column1, column2, column FROM table_name;
SELECT ---- 關(guān)鍵字
column1, column2 columnN --- 列的字段名
FROM ----- 關(guān)鍵字
table_name ----- 表名
從表中查詢出指定字段的對應(yīng)的值,如果想要拆線呢所有字段的值,可以采用:select * from 表名
SELECT * FROM table_name;
查詢操作實(shí)例:
//查詢操作
QString sqlSelect = QString("select * from staff;");
if(!query.exec(sqlSelect))
{
qDebug() << "insert data error" << db.lastError();
}
else
{
while(query.next())
{
qDebug() << query.value("name").toString();
qDebug() << query.value("age").toInt();
}
}
第五步:顯示數(shù)據(jù)庫信息到UI頁面
//顯示數(shù)據(jù)庫信息
QString sqlSelect = QString("select * from staff;");
if(!query.exec(sqlSelect))
{
qDebug() << "query data error" << db.lastError();
}
else
{
while(query.next())
{
qDebug() << query.value("name").toString();
qDebug() << query.value("age").toInt();
ui->nameLabel->setText(query.value("name").toString());
ui->ageLabel->setText(QString::number(query.value("name").toInt()));
}
}
查詢到最后一行數(shù)據(jù)顯示到UI上:
第六步:關(guān)閉數(shù)據(jù)庫
db.close();
3、Qt SQL模塊數(shù)據(jù)庫類接口
在Qt中為SQL數(shù)據(jù)庫提供驅(qū)動程序?qū)印QL API層和用戶界面層,其提供主要類的簡要功能說明見下表
Qt SQL模塊包含的主要類的功能
類名稱 | 功能說明 |
---|---|
QSqlDatabase | 用于與數(shù)據(jù)庫建立連接 |
QSqlDriver | 訪問特定sql數(shù)據(jù)庫的抽象基類 |
QSqlDriverCreator | 為某個(gè)具體的數(shù)據(jù)庫驅(qū)動提供SQL驅(qū)動的模板類 |
QSqlDriverCreatorBase | 所有SQL驅(qū)動器的基類 |
QSqlDriverPlugin | 用于定制QSqlDriver插件的抽象類 |
QSqlError | SQL數(shù)據(jù)錯(cuò)誤細(xì)信息,可以用于訪問上一次出錯(cuò)的信息 |
QSqlField | 操作數(shù)據(jù)表或試圖的字段的類 |
QSqlIndex | 執(zhí)行數(shù)據(jù)庫索引的類 |
QSqlQuery | 執(zhí)行各種SQL語句的類 |
QSqlQueryModel | SQL查詢結(jié)果數(shù)據(jù)的只讀數(shù)據(jù)模型,用于SELECT查詢結(jié)果數(shù)據(jù)記錄的只讀顯示 |
QSqlRecord | 封裝了數(shù)據(jù)記錄操作的類 |
QSqlRelation | 用于存儲SQL外鍵信息的類,用于QSqlRelationalTableModel數(shù)據(jù)源中設(shè)置代碼字段與關(guān)聯(lián)數(shù)據(jù)表的關(guān)系 |
QSqlRelationTableModel | 用于QSqlRelationalTableModel的一個(gè)代碼字段的顯示和編輯代理組件,一般是一個(gè)QComboBox組件,下拉列表中自動填充代碼表的代碼字段對應(yīng)的實(shí)際內(nèi)容 |
QSqlRelationTableModel | 用于一個(gè)數(shù)據(jù)表的可編輯數(shù)據(jù)模型,支持代碼字段的外鍵 |
QSqlResult | 訪問SQL數(shù)據(jù)庫的抽象接口 |
QSqlTableModel | 編輯一個(gè)單一數(shù)據(jù)表的數(shù)據(jù)模型類 |
QtSQL也是采用MVC設(shè)計(jì)思想來處理數(shù)據(jù),主要類有:
(1) QSqlDatabase用于建立與數(shù)據(jù)庫的連接,在建立連接時(shí),加載數(shù)據(jù)庫驅(qū)動的時(shí)候,可以設(shè)置數(shù)據(jù)庫類型和數(shù)據(jù)庫名字。除此之外,還可以通過接口設(shè)置數(shù)據(jù)庫名字、主機(jī)名、用戶名和密碼,其主要接口說明見下表:
QSqlDatabase操作主要接口
函數(shù)名稱 | 功能說明 |
---|---|
QSqlDatabase addDatabase(constQString &type,const QString &connectionName=QLatin1String(defaultConnection)) | 根據(jù)數(shù)據(jù)庫類型,獲取數(shù)據(jù)庫對象并連接 |
void setDatabaseName(const QString &name) | 設(shè)置連接數(shù)據(jù)庫名字 |
void setHostName(const QString &host) | 設(shè)置連接主機(jī)名字 |
void sePassword(const QString &password) | 設(shè)置連接密碼 |
void setUserName(const QString &name) | 設(shè)置連接用戶名 |
bool open() | 打開連接的數(shù)據(jù)庫 |
(2) QSqlQuery執(zhí)行各種SQL語句的類,在打開成功連接的數(shù)據(jù)庫,則可以通過QSqlQuery的接口來訪問數(shù)據(jù)庫中內(nèi)容,其主要接口說明見下表
QSqlQuery操作主要接口
函數(shù)名稱 | 功能說明 |
---|---|
QSqlQuery(const QString &query = QString(),QSqlDatabase db=QSqlDatabase()) | 得到訪問數(shù)據(jù)庫QSqlQuery對象 |
bool exec(const QString &query) | 執(zhí)行SQL語句訪問數(shù)據(jù)庫 |
int at() const | 得到當(dāng)前記錄查詢位置,第一條記錄的為0 |
bool first() | 檢索結(jié)果中的第一條記錄 |
bool last() | 檢索結(jié)果中的最后一條記錄 |
bool next() | 檢索結(jié)果中的下一條記錄 |
QVariant value(const QString &name) const | 返回當(dāng)前記錄中名為name的字段的值 |
-
嵌入式
+關(guān)注
關(guān)注
5068文章
19021瀏覽量
303322 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3766瀏覽量
64276 -
MySQL
+關(guān)注
關(guān)注
1文章
802瀏覽量
26445
發(fā)布評論請先 登錄
相關(guān)推薦
評論