Qt之sqlite数据库

通过命令行代码来使用sqlite3.exe

想新建一个数据库文件,文件名字为ljybc.db

如图,当只是输入想要创建的文件名称时并不能在文件夹中创建出文件

当检查库里有哪些数据表tables,才会从文件中找到新建的文件。

Qt之sqlite数据库

下面演示一些基础的语句:

首先创建数据表怎么编写呢? —–>前面是命令,后面是名字(字段); 要注意后面分号不能忘

create table userinfo(username,password);

Qt之sqlite数据库

这样就是创建成功了,那么我们查询一下表是否存在,

怎么查询数据表呢? ——–> . tables 要注意前面的表不要忘记

Qt之sqlite数据库

看,新建的表已经存在了,那么查询一下这个表里面是否有数据

怎么查询数据表里面是否有数据呢?——-> select * from userinfo;

select->就是查询 *->就代表所有的字段 from->来自哪张表 userinfo->表名 ; ->分号不能忘

Qt之sqlite数据库

但是我们没有对表进行任何添加操作,所以什么都没有

如何插入数据呢? ——> insert into userinfo(username,password) value(‘yz’,123);

这条插入数据表示呢用户名为yz,密码为123

Qt之sqlite数据库

可以上下键来选择上一条语句,再次对表进行数据查询

Qt之sqlite数据库

现在再插入一条数据,要记得打字准确 -_-

Qt之sqlite数据库

现在学习如何更改数据,需要把上面用户密码值改成(‘yz111’,123222);

如何更改密码呢? ——->update userinfo set password=123222;

Qt之sqlite数据库

发现了,这样改完密码后两个账户的密码都被更改了

所以慎用这条语句,很有可能会把所有人的密码都给改了,那就糟糕了。

现在需要对刚才的操作进行补救,把第一个账户的密码改回来:

Qt之sqlite数据库

不同于刚才的语句,update userinfo set password=123 where username=’yz’

添加了where部分,因为要改密码,按正常的思路就是要告诉电脑改谁的密码,这里只有用户名和密码两个选项,肯定是根据用户名来区分改谁的密码,那就简单多了,只需要告诉电脑要改’yz’的密码就好了,再次进行查询就发现已经改过来了。

那还剩删除了,下面这个语句也要慎用 ——>delete from userinfo;

慎用!慎用!因为运行后会把所有数据都删了

如果只想删除一行,就要这样编写:

delete from userinfo where username=’yz111′;

Qt之sqlite数据库

总是打错哎~

因为现在可以重复,多添加几行,实现一下清空功能

Qt之sqlite数据库

Qt之sqlite数据库

到这里总结一下:

1、创建一个数据库文件名称为ljybc.db
sqlite3 ljybc.db
2、显示当前数据库中所有的表有哪些
.tables
3、创建userinfo数据表
create table userinfo(username,password);
4、向数据表userinfo中插入一行记录 yz|123
insert into userinfo(username,password) values(‘yz’,123);
5、查询userinfo表中的所有数据
select * from userinfo;
6、更新数据库中所有的数据记录用update
7、更新所有行的password字段的值
update userinfo set password=123222;
8、更新某些指定的记录对应的password,此时需要用where语句进行筛选定位
update userinfo set password=123 where username=’yz’;
9、如果想要清空某张表,使用delete语句,清空userinfo表中所有的记录
delete from userinfo;
10、想要清除指定行的记录,就要结合使用where语句
delete from userinfo where username=’yz111′;
11、重要提醒:数据库操作之前最好备份

下面通过qt使用sqlite数据库

qt在使用sql数据库的 时候,需要引用sql类库,在哪里引用呢?在工程文件.pro中

引入方法:QT +=sql

Qt之sqlite数据库

另一种方式就是在原来基础上拼接,类库之间用空格隔开,如下图就有三个类库

Qt之sqlite数据库

首先要引入头文件 #include

声明全局变量 QSqlDatabase db;

Qt之sqlite数据库
db=QSqlDatabase::addDatabase("QSQLITE"); //增加数据库,QSQLITE类型    db.setDatabaseName("yz1017.db");  //设计一个数据库,创建一个数据库文件yz1017.db

这里要看帮助文件,查找QSqlDatabase

Qt之sqlite数据库

这有个表格,要连接什么库就要把相应的名字添加到文件里

Qt之sqlite数据库

Qt之sqlite数据库

就出现了新建的数据库文件

Qt之sqlite数据库

接下来想看看数据库里面有没有表tables

出现了错误:Error: unable to open database “D:\Qt”: unable to open database file

Qt之sqlite数据库

Qt之sqlite数据库

还是出现问题,上面的问题没解决成功,于是我更改了文件名成功了。

Qt之sqlite数据库

声明全局变量:QSqlQuery sql;

Qt之sqlite数据库

接下来创建一张表,插入数据

sql.exec("create table user1(u,p)");
sql.exec("insert into user1(u,p) values('吉吉',123)");

Qt之sqlite数据库

运行后,用命令提示符sqlite3查询

此时又出现问题,我设想的是运行后就会出现新建的表,但是并没有,还提示我连接没打开

Qt之sqlite数据库

============================================

下面是一种解决方法,但是我没有成功

需要返回连接,需要返回字符串,头文件里包含一下QString

Qt之sqlite数据库

返回连接名称: QString s=db.connectionName();

Qt之sqlite数据库

但是我运行后还是查不到数据表

所以我重新建立了一个项目,按照上面的步骤一步步来执行,在定义QSqlQuery头文件后,在头文件定义指针QSqlQuery * query;

Qt之sqlite数据库

Qt之sqlite数据库

再次查询一下就成功了。

Qt之sqlite数据库

总结一下:

通过qt使用sqlite数据库
引入sql类库
在pro工程文件中引入sql
引入方法QT+=sql
另一种方式就是在原来基础上拼接,用空格隔开,每一个空格隔开的表示一个类库
窗体头文件引入 #include
db=QSqlDatabase::addDatabase(“QSQLITE”);通过这个来创建需要连接的数据库类型
通过setDatabaseName方法创建数据库文件
窗体引入 #include
通过QSqlquery的exec方法来执行sql语句
qt操作的sqlite如果数据库或表已经存在,那么是不会再次创建,而是打开

Original: https://blog.csdn.net/GiGi_Princess/article/details/120798941
Author: Gigi Princess
Title: Qt之sqlite数据库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816182/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球