sqlite数据库的安装、操作及在Qt中的使用

sqlite数据库的安装、操作及在Qt中的使用

sqlite是比较轻量级的数据库,属于关系型数据库

1、安装:

进入官网的download,根据自己所需的位数进行相关文件的下载,

注意:1)需要下载 ①dll类型文件②tools工具文件

           2)将这两个压缩文件解压到一个文件夹下sqlite

2、使用:

1)通过命令行来使用 sqlite3.exe文件;

2)新建文本文档 → 修改后缀为.db → 将该.db文件拖到sqlite3.exe文件处,就会出现一个黑色的框 → 在该框中对sqlite数据库进行操作

3)在sqlite3.exe的文件的路径中,全选,然后输入cmd,回车,出现黑色的框,在该框中对sqlite数据库进行操作

3、数据库操作:

  • 创建数据库: sqlite3 数据库名.db
  • 查看所有表:.tables

【注】:执行创建数据库操作后,在路径中不会生成该数据库的.db文件,但是当执行查看表的操作后,该数据库.db文件则会被创建在路径中。只不过这个数据库是没有表格的。

  • 创建表: create table 表名(字段1,字段2,...,字段n);
  • 查询表中所有数据: select * from 表名;
  • 表中插入数据:insert into 表名(字段1,字段2,...,字段n) values(数据1,数据2,...,数据n);
  • 更新表中某些指定记录对应的数据:update 表名 set 字段2=新数据2 where 字段1="数据1";

【注】:update 表名 set 字段2=新数据2;    这个语句,是将该表中的所有的字段2的数据都更新为 新数据2。(例如:表为 user_infomation,字段2为 password,新数据2为 abc123,则执行该语句后,user_infomation表中的所有用户的password都为abc123)。执行更新操作,一定要注意是否需要添加筛选条件where

  • 删除表中某些指定记录对应的数据:delete from 表名 where 字段1='数据1'; 

【注】:清空某张表中所有记录:delete from 表名; 

【重要提醒】数据库操作之前最好备份!!!

关于sqlite数据库的常用操作见:https://blog.csdn.net/qq_43961980/article/details/104966345?spm=1001.2014.3001.5501

4、通过Qt使用sqlite:

1)使用前提:

① 引用sql类库:在pro工程文件引入sql(方法1:QT+=sql    方法2:在原来的基础上拼接,将 QT += core gui   改为  QT += core gui sql,每一个类库之间用空格隔开)

.h文件(窗体头文件)中,添加头文件:

#include  //连接数据库、创建数据库

2)使用方法:

① 在窗体头文件中,添加 QSqlDatabase db;  如下:

② 在窗体cpp文件中,添加数据库连接函数:通过 setDatabaseName 方法来创建数据库,通过 addDatabase 方法来创建需要连接的数据库类型

void Widget::connect_sqlite()//连接数据库函数
{
    //连接数据库
    this->db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("Dme.db");//设置一个数据库,创建一个数据库文件
    //判断数据库是否打开成功
    bool ok;
    ok = db.open();
    if(!ok)
    {
        qDebug()<<"数据库打开失败";
        db.lastError();
    }
    else
    {
        qDebug()<<"数据库打开成功";
    }
}

【注】:数据库的创建是在  build-文件夹  中。

③ 在窗体头文件中添加:

#include //执行各种SQL语句的类

在窗体cpp文件中:通过QSqlQuery的exec方法来执行sql语句

//使用局部变量的形式声明
QSqlQuery query;
query.exec("create table user1(uname,upassword)");//创建表
query.exec("insert into table user1(uname,upassword) values('小明','123')");//插入数据

【重要提醒】:QSqlQuery类型的变量声明时,若想声明全局变量,则需要声明为指针类型。

→ 原因:如若未声明为指针类型的全局变量,则在连接并打开数据库后,用该变量去调用方法时,会出现找不到数据库(数据库未打开的情况),是因为全局变量声明响应后,数据库还未打开,因此该变量无法接受到数据库的连接。

//使用全局变量的形式声明
query = new QSqlQuery();
query->exec("create table user1(uname,upassword)");

【注】:使用指针时,不是用 .  而是用 ->

④ Qt操作的sqlite,如果数据库或表已经存在,则不会再次创建,而是打开。

    因此在Qt中,操作数据库时,表的创建最好在命令行中进行,而表的增删改查则在Qt中进行。

你可能感兴趣的:(Qt,数据库,sqlite,qt)