Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼
Qt 創(chuàng)建 SQlite數(shù)據(jù)庫
void Widget::initDB()
{
// 創(chuàng)建并打開數(shù)據(jù)庫
QSqlDatabase database;
database = QSqlDatabase::addDatabase("QSQLITE");
// qDebug() << QApplication::applicationDirPath(); // 獲取應用程序當前目錄
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";
// 綁定關鍵字后才能進行操作
sql_query.prepare("INSERT INTO student (UserId, UserName, PassWord) "
"VALUES (:UserId, :UserName, :PassWord)");
qint8 i = 0;
foreach (QString name, names) // 從names表里獲取每個名字
{
sql_query.bindValue(":UserId", i+2); // 向綁定值里加入名字
sql_query.bindValue(":UserName", name); // 成績
sql_query.bindValue(":PassWord", password[i]); // 班級
if(!sql_query.exec())
{
qDebug() << "Error: Fail." << sql_query.lastError();
}
i++;
}
// 讀取sqlite
studentInfo tmp;
QVector<studentInfo> infoVect; // 數(shù)據(jù)庫緩存
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();
}
}

以下是個人代碼備份
這個代碼是在qt寫的,包含了數(shù)據(jù)庫的創(chuàng)建和寫入,但是我在項目準備直接在dataGrip把數(shù)據(jù)一鍵導入創(chuàng)建好數(shù)據(jù)庫之后再用qt里面的sql語句讀,所以就不需要這一部分了
#include "sqlitedatabase.h"
SqliteDatabase::SqliteDatabase()
{
qDebug() << "hhh";
// initPickNameDB();
}
void SqliteDatabase::initPickNameDB()
{
// 創(chuàng)建并打開數(shù)據(jù)庫
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, '辦領導')");
// 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, '機構改革處')");
// sql_query.exec("insert into department (id, name) values (5, '黨群政法行政機構編制管理處')");
// sql_query.exec("insert into department (id, name) values (6, '政府行政機構編制管理處')");
// sql_query.exec("insert into department (id, name) values (7, '市縣行政機構編制管理處')");
// sql_query.exec("insert into department (id, name) values (8, '事業(yè)機構編制管理處')");
// sql_query.exec("insert into department (id, name) values (9, '事業(yè)單位登記管理處')");
// sql_query.exec("insert into department (id, name) values (10, '機構編制監(jiān)督檢查處')");
// sql_query.exec("insert into department (id, name) values (11, '人事處')");
// sql_query.exec("insert into department (id, name) values (12, '機關黨委')");
// sql_query.exec("insert into department (id, name) values (13, '省機構編制電子政務中心')");
// sql_query.exec("insert into department (id, name) values (14, '省機構編制研究中心')");
// 批量填充表
QStringList deptNames;
deptNames << "辦領導" << "綜合處" << "政策法規(guī)處" << "機構改革處"
<< "黨群政法行政機構編制管理處" << "政府行政機構編制管理處"
<< "市縣行政機構編制管理處" << "事業(yè)機構編制管理處" << "事業(yè)單位登記管理處"
<< "機構編制監(jiā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ù)庫緩存
sql_query.exec("SELECT * FROM ");
}
到此這篇關于Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼的文章就介紹到這了,更多相關Qt創(chuàng)建SQlite內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++標準庫中sstream與strstream的區(qū)別詳細解析
以下是對C++標準庫中sstream與strstream的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09
C++實現(xiàn)LeetCode(166.分數(shù)轉(zhuǎn)循環(huán)小數(shù))
這篇文章主要介紹了C++實現(xiàn)LeetCode(166.分數(shù)轉(zhuǎn)循環(huán)小數(shù))2021-07-07
C語言中getchar()與putchar()函數(shù)詳解
本文主要介紹了C語言中getchar()與putchar()函數(shù)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01
C++類的靜態(tài)成員變量與靜態(tài)成員函數(shù)詳解
下面小編就為大家?guī)硪黄狢++類的靜態(tài)成員變量與靜態(tài)成員函數(shù)的文章。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-11-11
簡單比較C語言中的execl()函數(shù)與execlp()函數(shù)
這篇文章主要介紹了C語言中的execl()函數(shù)與execlp()函數(shù)的簡單比較,是C語言入門學習中的基礎知識,需要的朋友可以參考下2015-08-08

