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語句讀,所以就不需要這一部分了
#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í)成功版教程)
- 通過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++ 構(gòu)造函數(shù)中使用new時(shí)注意事項(xiàng)
本文主要介紹了C++ 構(gòu)造函數(shù)中使用new時(shí)注意事項(xiàng)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
json error: Use of overloaded operator [] is ambiguous錯(cuò)誤的解決方
今天小編就為大家分享一篇關(guān)于json error: Use of overloaded operator [] is ambiguous錯(cuò)誤的解決方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04
C++設(shè)計(jì)模式之Static Factory模式詳解
這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之Static Factory模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
詳解C語言中不同類型的數(shù)據(jù)轉(zhuǎn)換規(guī)則
這篇文章給大家講解不同類型數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換,有自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換,針對(duì)每種轉(zhuǎn)換方法小編給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-07-07
C++位運(yùn)算符詳解(異或運(yùn)算符和移位運(yùn)算符)
下面小編就為大家?guī)硪黄狢++位運(yùn)算符詳解(異或運(yùn)算符和移位運(yùn)算符)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
C語言編程之三個(gè)方法實(shí)現(xiàn)strlen函數(shù)
本篇文章是C語言編程篇,主要為大家介紹C語言編程中實(shí)現(xiàn)strlen函數(shù)的三個(gè)方法講解,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09

