国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術Linux主板Qt數據庫應用程序簡介

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-01-17 09:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SQLite是一個開源的嵌入式數據庫,其特點是零配置,可移植性好,小巧、高效而且可靠。同時SQLite的數據庫權限只依賴于文件系統,沒有用戶帳戶的概念,因此使用起來很方便。英創Linux主板能夠很好的支持SQLite,相關的測試例程已經在光盤中提供,本文主要簡介Qt中的數據庫開發。

Qt中的QtSql模塊提供了對數據庫的支持,該模塊中的眾多類基本上可以分為三層:用戶接口層、SQL接口層,驅動層。

其中驅動層為具體的數據庫和SQL接口層之間提供了底層的橋梁;SQL接口層提供了對數據庫的訪問;用戶接口層的幾個類實現了將數據庫中的數據鏈接到窗口部件上,這些類是使用前一章的模型/視圖框架實現的,它們是更高層次的抽象,即便不熟悉SQL也可以操作數據庫。如果要使用QtQql模塊中的這些類,需要在項目文件(.pro文件)中添加QT += sql這一行代碼。

QtSql模塊使用數據庫驅動來和不同的數據庫接口進行通信。由于Qt的SQL模型的接口是獨立于數據庫的,所以所有數據庫特定的代碼都包含在了這些驅動中。我們使用的免費的Qt只提供了SQLite和ODBC數據庫的驅動。創建數據庫連接:

QSqlDatabase db = QSqlDatabase::addDatabase('QSQLITE'); //指定驅動
db.setDatabaseName('/mnt/nandflash/my.db'); //指定路徑

使用open()函數將數據庫打開,如果打開失敗,則彈出對話提示框:
if (!db.open())
{
QMessageBox::critical(0, qApp->tr('Cannot open database'),
qApp->tr('Unable to establisha database connection.'
), QMessageBox::Cancel);
return false;
}

使用QSqlQuery創建了一個product表,并插入id,name和speed三個字段的三條記錄。其中,id字段是int類型的,''primary key ''表明該字段是主鍵,它不能為空,而且不能有重復的值;而name字段是varchar類型的,Speed字段也是varchar類型的,注意這里使用的SQL語句都要包含在雙引號中,如果一行寫不完,那么分行后,每一行都要使用兩個雙引號引起來:

QSqlQuery query;
// 創建product表
query.exec(QString ('create table product (id int primary key, '
'name varchar, Speed varchar)'));
query.exec(QString ('insert into product values(1, 'EM335x', '1GHZ')'));
query.exec(QString ('insert into product values(2, 'EM3352', '600MHZ')'));
query.exec(QString ('insert intoproduct values(3, 'EM9280', '454MHZ')'));

SQL表格模型提供了一個一次只能操作一個SQL表的讀/寫模型QSqlTableModel,它可以瀏覽和修改獨立的SQL表,并且只需編寫很少的代碼,而且不需要了解SQL語法。該模型默認是可讀可寫的。我們首先創建一個QSqlTableModel,只須使用setTable()來為其指定數據庫表,然后使用select()函數進行查詢:

model = new QSqlTableModel(this);
model->setTable('product');
model->select();
// 設置編輯策略
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
ui->tableView->setModel(model);

在使用該模型前,一般還要設置其編輯策略,它由QsqlTableModel::EditStrategy枚舉變量定義,一共有三個值:
QsqlTableModel::OnFieldChange:所有對模型的改變都會立即應用到數據庫。
QsqlTableModel::OnRowChange:對一條記錄的改變會在用戶選擇另一條記錄時被應用。
QsqlTableModel::OnManualSubmit:所有的改變都會在模型中進行緩存,知道調用submitAll()或者revertAll()函數。

下面添加一些功能按鈕,逐個實現他們:

// 提交修改按鈕
void MainWindow::on_pushButton_clicked()
{
// 開始事務操作
model->database().transaction();
if (model->submitAll()) {
model->database().commit(); //提交
} else {
model->database().rollback(); //回滾
QMessageBox::warning(this, tr('tableModel'),
tr('數據庫錯誤: %1').arg(model->lastError().text()));
}
}

如果可以使用submitAll()將模型中的修改向數據庫提交成功,那么執行commit(),否則進行回滾rollback(),并提示錯誤信息,下面是撤銷修改按鈕:

// 撤銷修改按鈕
void MainWindow::on_pushButton_2_clicked()
{
model->revertAll();
}

這里使用了setFilter()函數來進行數據篩選,采用id來篩選:

// 查詢按鈕,進行篩選
void MainWindow::on_pushButton_7_clicked()
{
QString id = ui->comboBox->currentText();
//根據id進行篩選,一定要使用單引號
model->setFilter(QString('id = '%1'').arg(id));
model->select();
}

使用setTable()來指定數據庫表,然后使用select()函數進行查詢:
// 顯示全表按鈕
void MainWindow::on_pushButton_8_clicked()
{
model->setTable('product');
model->select();
}

// 按id升序排列按鈕
void MainWindow::on_pushButton_5_clicked()
{
//id屬性,即第0列,升序排列
model->setSort(0, Qt::AscendingOrder);
model->select();
}

// 按id降序排列按鈕
void MainWindow::on_pushButton_6_clicked()
{
model->setSort(0, Qt::DescendingOrder);
model->select();
}

// 刪除選中行按鈕
void MainWindow::on_pushButton_4_clicked()
{
// 獲取選中的行
int curRow = ui->tableView->currentIndex().row();
// 刪除該行
model->removeRow(curRow);
int ok = QMessageBox::warning(this,tr('刪除當前行!'),
tr('你確定刪除當前行嗎?'), QMessageBox::No,QMessageBox::Yes);
if(ok == QMessageBox::No)
{ // 如果不刪除,則撤銷
model->revertAll();
} else { // 否則提交,在數據庫中刪除該行
model->submitAll();
}
}

// 添加記錄按鈕
void MainWindow::on_pushButton_3_clicked()
{
// 獲得表的行數
int rowNum = model->rowCount();
int id = rowNum + 1 ;
// 添加一行
model->insertRow(rowNum);
model->setData(model->index(rowNum,0), id);
// 可以直接提交
//model->submitAll();
}

運行效果:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219006
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

    37069
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    恒訊科技解析:如何安裝MySQL并創建數據庫

    安裝和管理MySQL不必復雜。只需幾分鐘,你就能在Linux服務器上搭建MySQL,創建第一個數據庫,甚至自動化備份——同時確保數據安全有序。 什么是 MySQL? MySQL 是一個關系型
    的頭像 發表于 01-14 14:25 ?173次閱讀

    mysql數據恢復—mysql數據庫表被truncate的數據恢復案例

    某云ECS網站服務器,linux操作系統,部署了mysql數據庫。工作人員在執行數據庫版本更新測試時,錯誤地將本應在測試執行的sql腳本在生產
    的頭像 發表于 09-11 09:28 ?871次閱讀
    mysql<b class='flag-5'>數據</b>恢復—mysql<b class='flag-5'>數據庫</b>表被truncate的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—服務器異常斷電導致Oracle數據庫故障的數據恢復案例

    Oracle數據庫故障: 某公司一臺服務器上部署Oracle數據庫。服務器意外斷電導致數據庫報錯,報錯內容為“system01.dbf需要更多的恢復來保持一致性”。該Oracle數據庫
    的頭像 發表于 07-24 11:12 ?636次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—服務器異常斷電導致Oracle<b class='flag-5'>數據庫</b>故障的<b class='flag-5'>數據</b>恢復案例

    飛騰主板為信產業發展提高硬實力

    信息技術飛速發展的當下,信產業已成為我國實現科技自立自強、保障國家信息安全的關鍵領域。信,即信息技術應用創新,其核心目標是實現
    的頭像 發表于 07-22 18:20 ?707次閱讀

    三款主流國產數據庫技術特點

    隨著數字經濟的快速發展和數據安全要求的提升,國產數據庫正迎來前所未有的發展機遇。在信浪潮推動下,達夢數據庫、TiDB、華為高斯數據庫等國產
    的頭像 發表于 07-14 11:08 ?1145次閱讀

    數據庫數據恢復—MongoDB數據庫文件丟失的數據恢復案例

    MongoDB數據庫數據恢復環境: 一臺操作系統為Windows Server的虛擬機上部署MongoDB數據庫。 MongoDB數據庫故障: 工作人員在MongoDB服務仍
    的頭像 發表于 07-01 11:13 ?637次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—MongoDB<b class='flag-5'>數據庫</b>文件丟失的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—SQL Server數據庫被加密如何恢復數據

    SQL Server數據庫故障: SQL Server數據庫被加密,無法使用。 數據庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發表于 06-25 13:54 ?670次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>被加密如何恢復<b class='flag-5'>數據</b>?

    科普|信是什么?一文讀懂“信息技術應用創新”戰略

    什么是信?信,即“信息技術應用創新”,是國家推動IT系統自主可控、安全可控的重要戰略工程。它不僅是技術層面的創新,更承載著保障國家網絡安全、推動產業升級和實現數字主權的重任。簡單來
    的頭像 發表于 06-13 10:06 ?8187次閱讀
    科普|信<b class='flag-5'>創</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創新”戰略

    oracle數據恢復—oracle數據庫誤執行錯誤truncate命令如何恢復數據

    oracle數據庫誤執行truncate命令導致數據丟失是一種常見情況。通常情況下,oracle數據庫誤操作刪除數據只需要通過備份恢復數據
    的頭像 發表于 06-05 16:01 ?1058次閱讀
    oracle<b class='flag-5'>數據</b>恢復—oracle<b class='flag-5'>數據庫</b>誤執行錯誤truncate命令如何恢復<b class='flag-5'>數據</b>?

    SQLSERVER數據庫是什么

    支持在Linux和容器化環境中運行。 核心特點 關系型數據庫 基于SQL(結構化查詢語言)進行數據操作,支持表、行、列等結構化存儲。 提供ACID(原子性、一致性、隔離性、持久性)事務支持,確保
    的頭像 發表于 05-26 09:19 ?1168次閱讀

    MySQL數據庫是什么

    MySQL數據庫是一種 開源的關系型數據庫管理系統(RDBMS) ,由瑞典MySQL AB公司開發,后被Oracle公司收購。它通過結構化查詢語言(SQL)進行數據存儲、管理和操作,廣泛應用于Web
    的頭像 發表于 05-23 09:18 ?1202次閱讀

    浪潮下,國產主板有什么新的發展機遇?

    信息技術應用創新浪潮的推動下,國產主板迎來了諸多新的發展機遇。信產業旨在實現信息技術領域的自主可控,這一戰略目標為國產主板的發展提供了廣
    的頭像 發表于 05-09 09:24 ?719次閱讀
    信<b class='flag-5'>創</b>浪潮下,國產<b class='flag-5'>主板</b>有什么新的發展機遇?

    技術案例】Qt 環境部署 - Ubuntu 篇

    什么是QtQt是一個跨平臺C++圖形用戶界面應用程序開發框架,可構建高性能的桌面、移動及Web應用程序,也可用于開發非GUI程序,比如控制
    的頭像 發表于 04-16 17:17 ?1923次閱讀
    【<b class='flag-5'>技術</b>案例】<b class='flag-5'>Qt</b> 環境部署 - Ubuntu 篇

    數據庫數據恢復——MongoDB數據庫文件拷貝后服務無法啟動的數據恢復

    MongoDB數據庫數據恢復環境: 一臺Windows Server操作系統虛擬機上部署MongoDB數據庫。 MongoDB數據庫故障: 管理員在未關閉MongoDB服務的
    的頭像 發表于 04-09 11:34 ?864次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復——MongoDB<b class='flag-5'>數據庫</b>文件拷貝后服務無法啟動的<b class='flag-5'>數據</b>恢復

    Linux的作用

    Linux是做什么用的? 1、服務器操作系統:Linux在服務器領域非常流行,因為它穩定、安全且可靠。許多大型互聯網公司和數據中心都使用Linux作為服務器操作系統,用于托管網站、
    發表于 04-04 01:57