Qt創(chuàng)建SQlite數(shù)據(jù)庫(kù)的示例代碼
Qt 創(chuàng)建 SQlite數(shù)據(jù)庫(kù)
void Widget::initDB() { // 創(chuàng)建并打開數(shù)據(jù)庫(kù) QSqlDatabase database; database = QSqlDatabase::addDatabase("QSQLITE"); // qDebug() << QApplication::applicationDirPath(); // 獲取應(yīng)用程序當(dāng)前目錄 database.setDatabaseName("test.sqlite3"); if(!database.open()) { qDebug() << "Error: Failed to connect database." << database.lastError(); } else { qDebug() << "Succeed to connect database."; } // 創(chuàng)建表格 QSqlQuery sql_query = database.exec("DROP TABLE student"); // 先清空一下表,可按需添加此句 // sql_query.exec("DROP TABLE student"); // 創(chuàng)建表格student if(!sql_query.exec("create table student(UserId int primary key, UserName text, PassWord text)")) { qDebug() << "Error: Fail to create table." << sql_query.lastError(); } else { qDebug() << "Table created!"; } // 填充表 if(!sql_query.exec("INSERT INTO student VALUES(1, 'AppleCai', '23')")) { qDebug() << "Error: Fail to create table." << sql_query.lastError(); } else { qDebug() << "add one created!"; } // 批量填充表 QStringList names; names << "小A" << "小B" << "小C" << "小D" << "小E" << "小F" << "小G" << "小H" << "小I"; QStringList password; password << "12" << "23" << "34" << "45" << "56" << "67" << "78" << "89" << "90"; // 綁定關(guān)鍵字后才能進(jìn)行操作 sql_query.prepare("INSERT INTO student (UserId, UserName, PassWord) " "VALUES (:UserId, :UserName, :PassWord)"); qint8 i = 0; foreach (QString name, names) // 從names表里獲取每個(gè)名字 { sql_query.bindValue(":UserId", i+2); // 向綁定值里加入名字 sql_query.bindValue(":UserName", name); // 成績(jī) sql_query.bindValue(":PassWord", password[i]); // 班級(jí) if(!sql_query.exec()) { qDebug() << "Error: Fail." << sql_query.lastError(); } i++; } // 讀取sqlite studentInfo tmp; QVector<studentInfo> infoVect; // 數(shù)據(jù)庫(kù)緩存 sql_query.exec("SELECT * FROM student WHERE UserId >= 5 AND UserId <= 9;"); while (sql_query.next()) { tmp.UserId = sql_query.value(0).toInt(); tmp.UserName = sql_query.value(1).toString(); tmp.Password = sql_query.value(2).toString(); qDebug() << tmp.UserId << tmp.UserName << tmp.Password; infoVect.push_back(tmp); } qDebug("done"); // 更改表中數(shù)據(jù) sql_query.prepare("UPDATE student SET PassWord = 'admin' WHERE UserName = 'AppleCai'"); if(!sql_query.exec()) { qDebug() << "Error: Fail." << sql_query.lastError(); } // 刪除表中數(shù)據(jù) sql_query.prepare("DELETE FROM student WHERE UserName = '小H'"); if(!sql_query.exec()) { qDebug() << "Error: Fail." << sql_query.lastError(); } }
以下是個(gè)人代碼備份
這個(gè)代碼是在qt寫的,包含了數(shù)據(jù)庫(kù)的創(chuàng)建和寫入,但是我在項(xiàng)目準(zhǔn)備直接在dataGrip把數(shù)據(jù)一鍵導(dǎo)入創(chuàng)建好數(shù)據(jù)庫(kù)之后再用qt里面的sql語(yǔ)句讀,所以就不需要這一部分了
#include "sqlitedatabase.h" SqliteDatabase::SqliteDatabase() { qDebug() << "hhh"; // initPickNameDB(); } void SqliteDatabase::initPickNameDB() { // 創(chuàng)建并打開數(shù)據(jù)庫(kù) QSqlDatabase database; database = QSqlDatabase::addDatabase("QSQLITE"); // qDebug() << QApplication::applicationDirPath(); database.setDatabaseName(QApplication::applicationDirPath() + "/CONFIG/" + "PickNameDB.sqlite3"); if(!database.open()) { qDebug() << "Error: Failed to connect database." << database.lastError(); } else { qDebug() << "Succeed to connect database."; } // 創(chuàng)建表格 先清空一下表 QSqlQuery sql_query = database.exec("DROP TABLE department"); sql_query = database.exec("DROP TABLE person"); if(!sql_query.exec("create table department (Id int primary key not null, " "DeptName vchar(50) not null )")) { qDebug() << "Error: Fail to create department table." << sql_query.lastError(); } else { qDebug() << "Department table created!"; } if(!sql_query.exec("create table person (Id int primary key not null , " "DeptID integer not null , " "PerName vchar(50) not null, " "foreign key(DeptID) references department (Id))")) { qDebug() << "Error: Fail to create person table." << sql_query.lastError(); } // 填充表 // sql_query.exec("insert into department (id, name) values (1, '辦領(lǐng)導(dǎo)')"); // sql_query.exec("insert into department (id, name) values (2, '綜合處')"); // sql_query.exec("insert into department (id, name) values (3, '政策法規(guī)處')"); // sql_query.exec("insert into department (id, name) values (4, '機(jī)構(gòu)改革處')"); // sql_query.exec("insert into department (id, name) values (5, '黨群政法行政機(jī)構(gòu)編制管理處')"); // sql_query.exec("insert into department (id, name) values (6, '政府行政機(jī)構(gòu)編制管理處')"); // sql_query.exec("insert into department (id, name) values (7, '市縣行政機(jī)構(gòu)編制管理處')"); // sql_query.exec("insert into department (id, name) values (8, '事業(yè)機(jī)構(gòu)編制管理處')"); // sql_query.exec("insert into department (id, name) values (9, '事業(yè)單位登記管理處')"); // sql_query.exec("insert into department (id, name) values (10, '機(jī)構(gòu)編制監(jiān)督檢查處')"); // sql_query.exec("insert into department (id, name) values (11, '人事處')"); // sql_query.exec("insert into department (id, name) values (12, '機(jī)關(guān)黨委')"); // sql_query.exec("insert into department (id, name) values (13, '省機(jī)構(gòu)編制電子政務(wù)中心')"); // sql_query.exec("insert into department (id, name) values (14, '省機(jī)構(gòu)編制研究中心')"); // 批量填充表 QStringList deptNames; deptNames << "辦領(lǐng)導(dǎo)" << "綜合處" << "政策法規(guī)處" << "機(jī)構(gòu)改革處" << "黨群政法行政機(jī)構(gòu)編制管理處" << "政府行政機(jī)構(gòu)編制管理處" << "市縣行政機(jī)構(gòu)編制管理處" << "事業(yè)機(jī)構(gòu)編制管理處" << "事業(yè)單位登記管理處" << "機(jī)構(gòu)編制監(jiān)督檢查處" << "人事處" << "機(jī)關(guān)黨委" << "省機(jī)構(gòu)編制電子政務(wù)中心" << "省機(jī)構(gòu)編制研究中心"; // 綁定關(guān)鍵字后才能進(jìn)行操作 sql_query.prepare("INSERT INTO department (Id, DeptName) " "VALUES (:Id, :DeptName)"); qint8 i = 0; foreach (QString deptName, deptNames) { sql_query.bindValue(":Id", i + 1); sql_query.bindValue(":DeptName", deptName); if(!sql_query.exec()) { qDebug() << "Error: Fail." << sql_query.lastError(); } i++; } // 讀取sqlite department dept; QVector<department> tmpDept; // 數(shù)據(jù)庫(kù)緩存 sql_query.exec("SELECT * FROM "); }
到此這篇關(guān)于Qt創(chuàng)建SQlite數(shù)據(jù)庫(kù)的示例代碼的文章就介紹到這了,更多相關(guān)Qt創(chuàng)建SQlite內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- QT連接MYSQL數(shù)據(jù)庫(kù)的詳細(xì)步驟
- Qt5連接并操作PostgreSQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例
- Qt入門學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)操作指南
- QT連接Oracle數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登錄驗(yàn)證的操作步驟
- Qt連接MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)(保姆級(jí)成功版教程)
- 通過(guò)Qt連接OpenGauss數(shù)據(jù)庫(kù)的詳細(xì)教程
- QT連接Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)步驟
- Qt操作SQLite數(shù)據(jù)庫(kù)的教程詳解
- 一篇文章詳解Qt中如何訪問數(shù)據(jù)庫(kù)
相關(guān)文章
C++標(biāo)準(zhǔn)庫(kù)中sstream與strstream的區(qū)別詳細(xì)解析
以下是對(duì)C++標(biāo)準(zhǔn)庫(kù)中sstream與strstream的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09C++實(shí)現(xiàn)LeetCode(166.分?jǐn)?shù)轉(zhuǎn)循環(huán)小數(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(166.分?jǐn)?shù)轉(zhuǎn)循環(huán)小數(shù))2021-07-07C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解
本文主要介紹了C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Matlab實(shí)現(xiàn)二維散點(diǎn)主方向直方圖的繪制詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)二維散點(diǎn)主方向直方圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下2022-09-09C++類的靜態(tài)成員變量與靜態(tài)成員函數(shù)詳解
下面小編就為大家?guī)?lái)一篇C++類的靜態(tài)成員變量與靜態(tài)成員函數(shù)的文章。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-11-11C++實(shí)現(xiàn)線性代數(shù)矩陣行簡(jiǎn)化
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)線性代數(shù)矩陣行簡(jiǎn)化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02C語(yǔ)言新手練習(xí)題之求第n個(gè)斐波那契數(shù)
斐波那契數(shù)列這一個(gè)大一上C語(yǔ)言就有的問題大家應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言新手練習(xí)題之求第n個(gè)斐波那契數(shù)的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11C語(yǔ)言實(shí)現(xiàn)宿舍管理課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)宿舍管理課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03簡(jiǎn)單比較C語(yǔ)言中的execl()函數(shù)與execlp()函數(shù)
這篇文章主要介紹了C語(yǔ)言中的execl()函數(shù)與execlp()函數(shù)的簡(jiǎn)單比較,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08