Qt之sqlite数据库

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

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

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

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

Qt之sqlite数据库_第1张图片

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

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

create table userinfo(username,password);

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

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

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

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

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

 

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

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

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

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

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

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

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

Qt之sqlite数据库_第2张图片

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

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

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

 

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

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

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

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

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

delete from userinfo where username='yz111';

Qt之sqlite数据库_第3张图片

总是打错哎~ 

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

Qt之sqlite数据库_第4张图片

 

到这里总结一下:

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

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

 

 首先要引入头文件 #include  

声明全局变量   QSqlDatabase db;

Qt之sqlite数据库_第5张图片

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

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

Qt之sqlite数据库_第6张图片

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

Qt之sqlite数据库_第7张图片 运行之后到项目路径里发现还是没有新建的文件,添加一行 db.open();  再次运行

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

Qt之sqlite数据库_第8张图片

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

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

Qt之sqlite数据库_第9张图片 应该是项目名称里面有空格,他无法完整识别,去掉空格就好了,接下来用之前学过的方法来查询一下有没有表:

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

Qt之sqlite数据库_第10张图片 添加头文件:#include   这是执行sql语句的类库 ,

声明全局变量:QSqlQuery sql;

Qt之sqlite数据库_第11张图片

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

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

Qt之sqlite数据库_第12张图片

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

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

Qt之sqlite数据库_第13张图片

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

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

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

Qt之sqlite数据库_第14张图片

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

Qt之sqlite数据库_第15张图片

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

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

Qt之sqlite数据库_第16张图片

Qt之sqlite数据库_第17张图片

 再次查询一下就成功了。

Qt之sqlite数据库_第18张图片

 总结一下:

 通过qt使用sqlite数据库

引入sql类库

在pro工程文件中引入sql

引入方法QT+=sql

另一种方式就是在原来基础上拼接,用空格隔开,每一个空格隔开的表示一个类库

窗体头文件引入 #include 就可以连接数据库,创建数据库

db=QSqlDatabase::addDatabase("QSQLITE");通过这个来创建需要连接的数据库类型

通过setDatabaseName方法创建数据库文件

窗体引入 #include 就可以执行数据库语句了

通过QSqlquery的exec方法来执行sql语句

qt操作的sqlite如果数据库或表已经存在,那么是不会再次创建,而是打开

你可能感兴趣的:(Qt萌新入门,数据库入门,sqlite,qt,big,data)