服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Qt创建SQlite数据库的示例代码

Qt创建SQlite数据库的示例代码

2022-12-06 13:44程序员朱帅 C/C++

本文主要介绍了Qt创建SQlite数据库的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Qt 创建 SQlite数据库

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
void Widget::initDB()
{
    // 创建并打开数据库
    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.";
    }
 
    // 创建表格
    QSqlQuery sql_query = database.exec("DROP TABLE student");
    // 先清空一下表,可按需添加此句
//    sql_query.exec("DROP TABLE student");
    // 创建表格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; // 数据库缓存
    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");
 
    // 更改表中数据
    sql_query.prepare("UPDATE student SET PassWord = 'admin' WHERE UserName = 'AppleCai'");
    if(!sql_query.exec())
    {
        qDebug() << "Error: Fail." << sql_query.lastError();
    }
 
    // 删除表中数据
    sql_query.prepare("DELETE FROM student WHERE UserName = '小H'");
    if(!sql_query.exec())
    {
        qDebug() << "Error: Fail." << sql_query.lastError();
    }
}

Qt创建SQlite数据库的示例代码

以下是个人代码备份

这个代码是在qt写的,包含了数据库的创建和写入,但是我在项目准备直接在dataGrip把数据一键导入创建好数据库之后再用qt里面的sql语句读,所以就不需要这一部分了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "sqlitedatabase.h"
 
SqliteDatabase::SqliteDatabase()
{
    qDebug() << "hhh";
//    initPickNameDB();
}
 
void SqliteDatabase::initPickNameDB()
{
    // 创建并打开数据库
    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.";
    }
 
    // 创建表格 先清空一下表
    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, '政策法规处')");
//    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, '事业机构编制管理处')");
//    sql_query.exec("insert into department (id, name) values (9, '事业单位登记管理处')");
//    sql_query.exec("insert into department (id, name) values (10, '机构编制监督检查处')");
//    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 << "办领导" << "综合处" << "政策法规处" << "机构改革处"
              << "党群政法行政机构编制管理处" << "政府行政机构编制管理处"
              << "市县行政机构编制管理处" << "事业机构编制管理处" << "事业单位登记管理处"
              << "机构编制监督检查处" << "人事处" << "机关党委"
              << "省机构编制电子政务中心" << "省机构编制研究中心";
 
    // 绑定关键字后才能进行操作
    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; // 数据库缓存
    sql_query.exec("SELECT * FROM ");
}

到此这篇关于Qt创建SQlite数据库的示例代码的文章就介绍到这了,更多相关Qt创建SQlite内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_43232564/article/details/123724923

延伸 · 阅读

精彩推荐
  • C/C++C语言求逆矩阵案例详解

    C语言求逆矩阵案例详解

    这篇文章主要介绍了C语言求逆矩阵案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    dogdng5802021-12-16
  • C/C++c语言左移和右移的示例详解

    c语言左移和右移的示例详解

    这篇文章主要介绍了c语言左移和右移的示例详解,移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与...

    axiok5482021-09-15
  • C/C++C++处理图存储的方式分享

    C++处理图存储的方式分享

    这篇文章主要介绍了C++处理图存储的方式分享,文章围绕邻接矩阵、邻接表、链式前向的主题展开详细内容,具有一定的参考价值,需要的小伙伴可以参考...

    苏州程序大白6682022-11-02
  • C/C++c++ 成员函数与非成员函数的抉择

    c++ 成员函数与非成员函数的抉择

    c++ 成员函数与非成员函数的抉择...

    C++教程网5782020-11-15
  • C/C++opencv3/C++实现霍夫圆/直线检测

    opencv3/C++实现霍夫圆/直线检测

    今天小编就为大家分享一篇opencv3/C++实现霍夫圆/直线检测,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    阿卡蒂奥7932021-08-08
  • C/C++详细解读C++编程中的匿名类类型和位域

    详细解读C++编程中的匿名类类型和位域

    这篇文章主要介绍了C++编程中的匿名类类型和位域,是C++入门学习中的基础知识,需要的朋友可以参考下...

    C++教程网9632021-03-23
  • C/C++C++实现LeetCode(80.有序数组中去除重复项之二)

    C++实现LeetCode(80.有序数组中去除重复项之二)

    这篇文章主要介绍了C++实现LeetCode(80.有序数组中去除重复项之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可...

    Grandyang6962021-11-30
  • C/C++C++中模板(Template)详解及其作用介绍

    C++中模板(Template)详解及其作用介绍

    这篇文章主要介绍了C++中模板(Template)的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参...

    我是小白呀10092021-12-30