通过命令行代码来使用sqlite3.exe
想新建一个数据库文件,文件名字为ljybc.db
如图,当只是输入想要创建的文件名称时并不能在文件夹中创建出文件
当检查库里有哪些数据表tables,才会从文件中找到新建的文件。
下面演示一些基础的语句:
首先创建数据表怎么编写呢? ----->前面是命令,后面是名字(字段); 要注意后面分号不能忘
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;
发现了,这样改完密码后两个账户的密码都被更改了
所以慎用这条语句,很有可能会把所有人的密码都给改了,那就糟糕了。
现在需要对刚才的操作进行补救,把第一个账户的密码改回来:
不同于刚才的语句,update userinfo set password=123 where username='yz'
添加了where部分,因为要改密码,按正常的思路就是要告诉电脑改谁的密码,这里只有用户名和密码两个选项,肯定是根据用户名来区分改谁的密码,那就简单多了,只需要告诉电脑要改'yz'的密码就好了,再次进行查询就发现已经改过来了。
那还剩删除了,下面这个语句也要慎用 ------>delete from userinfo;
慎用!慎用!因为运行后会把所有数据都删了
如果只想删除一行,就要这样编写:
delete from userinfo where username='yz111';
总是打错哎~
因为现在可以重复,多添加几行,实现一下清空功能
到这里总结一下:
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;
db=QSqlDatabase::addDatabase("QSQLITE"); //增加数据库,QSQLITE类型 db.setDatabaseName("yz1017.db"); //设计一个数据库,创建一个数据库文件yz1017.db
这里要看帮助文件,查找QSqlDatabase
这有个表格,要连接什么库就要把相应的名字添加到文件里
运行之后到项目路径里发现还是没有新建的文件,添加一行 db.open(); 再次运行
就出现了新建的数据库文件
接下来想看看数据库里面有没有表tables
出现了错误:Error: unable to open database "D:\Qt": unable to open database file
应该是项目名称里面有空格,他无法完整识别,去掉空格就好了,接下来用之前学过的方法来查询一下有没有表:
还是出现问题,上面的问题没解决成功,于是我更改了文件名成功了。
声明全局变量:QSqlQuery sql;
接下来创建一张表,插入数据
sql.exec("create table user1(u,p)"); sql.exec("insert into user1(u,p) values('吉吉',123)");
运行后,用命令提示符sqlite3查询
此时又出现问题,我设想的是运行后就会出现新建的表,但是并没有,还提示我连接没打开
============================================
下面是一种解决方法,但是我没有成功
需要返回连接,需要返回字符串,头文件里包含一下QString
返回连接名称: QString s=db.connectionName();
但是我运行后还是查不到数据表
所以我重新建立了一个项目,按照上面的步骤一步步来执行,在定义QSqlQuery头文件后,在头文件定义指针QSqlQuery * query;
再次查询一下就成功了。
总结一下:
通过qt使用sqlite数据库
引入sql类库
在pro工程文件中引入sql
引入方法QT+=sql
另一种方式就是在原来基础上拼接,用空格隔开,每一个空格隔开的表示一个类库
窗体头文件引入 #include
就可以连接数据库,创建数据库 db=QSqlDatabase::addDatabase("QSQLITE");通过这个来创建需要连接的数据库类型
通过setDatabaseName方法创建数据库文件
窗体引入 #include
就可以执行数据库语句了 通过QSqlquery的exec方法来执行sql语句
qt操作的sqlite如果数据库或表已经存在,那么是不会再次创建,而是打开