Qt学习day05 Qt数据库(Sqlite) 在Qt中使用Sqlite数据库

一 Qt数据库(Sqlite)
1 简介
1)什么是数据库
数据库是指以一定方式存储在一起,能为多个用户共享,具有尽可能小的冗余特性,是与应用程序彼此独立的数据集合。
2)相关名词
DB 数据库(database)
DBMS 数据库管理系统
DBA 数据库管理员
RDB 关系式数据库//普遍
3)常见的数据库
商业数据库:
–》甲骨文Oracle,市场占有率50%
–》IBM的DB2,市场占有率20%
–》微软的Sqlserver,市场占有率15%
非商业数据库:
–》Sun的MySQL
–》开源的Sqlite,轻量级嵌入式数据库
4)数据库操作语言(SQL)

2 Sqlite数据库
1)安装Sqlite
sudo apt-get install sqlite3//在线安装
2)测试
在终端执行“sqlite3”,正常可进入Sqlite命令行操作界面,在其中输入指令实现对数据库的操作。
SQLite version 3.11.0 2016-02-15 17:29:24
sqlite> …
注:在“sqlite>”提示界面,可以输入两种指令,一种以".“开头,实现对sqlite配置和显式格式相关配置;另一种指令是“sql语句”,实现数据的增删改查操作,以”;"结束。

3 sqlite自身配置和格式相关的指令
1).help: 查看帮助信息
2).quit和.exit:退出sqlite,回到终端
3).database:查看数据库名字和对应的文件名
4).table:查看数据库包含数据表的名字
5).schema:查看数据表创建时详细信息
6).mode MODE:设置数据显示模式
MODE可以是“tab/column/list/…”
7).header on:显示表头
8).nullvalue “NULL”:空白位置显示“NULL”

注:"ctrl+L"可以清屏
注:"SELECT * FROM company;"查看company数据表的全部内容
注:可以将和显示先关的指令写入配置文件,每次sqlite运行时将会自动加载
vi /home/tarena/.sqliterc
.mode tab
.header on
.nullvalue “NULL”

4 在命令行使用“sql语句”实现对数据库操作 //重点
1)创建数据表
语法:
CREATE TABLE 表名 (
列名1 类型1 [约束],列名2 类型2 [约束],…);
常用类型:
INT(整型)
TEXT(文本字符串)
REAL(浮点数)
约束:
PRIMARY KEY //主键约束,可以确保该列数据唯一,还可以加快数据访问。
NOT NULL //非空约束,表示该类数据不能为空

eg:
sqlite> CREATE TABLE student (
…> id INT PRIMARY KEY,
…> name TEXT NOT NULL,
…> score REAL NOT NULL );
sqlite> .table
company student

2)删除数据表
语法:
DROP TABLE 表名;

注:慎用,因为数据表一旦删除,里面的数据也将随之消失

3)向数据表插入数据(增)
语法:
INSERT INTO 表名
(列名1,列名2…列名n)
VALUES(数值1,数值2…数值n);
eg:
sqlite> INSERT INTO company
…> (id,name,age,address,salary)
…> VALUES(10018,‘貂蝉’,28,‘山东’,8800.5);
sqlite> INSERT INTO company
…> (id,name,age,salary)
…> VALUES(10021,‘大乔’,31,13000);
sqlite> INSERT INTO company
…> VALUES(10022,‘孙权’,35,‘江西’,16000);

4)从数据表删除数据(删)
语法:
DELETE FROM 表名 WHERE 条件表达式;
条件1 and 条件2//同时满足两个条件
条件1 or 条件2//只需要满足其中一个条件
eg:
sqlite> DELETE FROM company
…> WHERE id=10029;

5)修改数据表中数据(修)
语法:
UPDATE 表名
SET 列名1=新数值,列名2=新数值,…
WHERE 条件表达式;
eg:
sqlite> UPDATE company SET age=45
…> WHERE id=10011;
sqlite> UPDATE company
…> SET salary=salary+2000
…> WHERE age>=30 and age<=35;

6)查询数据表中数据(查)
语法:
SELECT 列名1,列名2… FROM 表名
WHERE 条件表达式 LIKE ‘匹配模式’
ORDER BY 列名 排序方式;

注:匹配模式
	% :匹配任意多个字符
	_ : 匹配一个任意字符		
注:排序方式
	ASC:升序排序
	DESC:降序排序	

eg:
sqlite> SELECT * FROM company;
sqlite> SELECT * FROM company
…> WHERE salary>10000 or salary<3500;
sqlite> SELECT * FROM company
…> WHERE age LIKE ‘2_’;//匹配年龄2?
sqlite> SELECT * FROM company
…> WHERE name LIKE ‘孙%’;//匹配孙某某
sqlite> SELECT * FROM company
…> ORDER BY id ASC;//根据ID升序排序
sqlite> SELECT * FROM company
…> ORDER BY salary DESC;//根据工资降序排序

练习:创建一个表示学生成绩的数据表student,列的名字依次是id(学号)、name(姓名)、score(成绩)
1)向数据表插入如下数据
id name score
10001 杨健 80.5
10002 王建立 88.5
10005 孟建 90
10003 闵卫 99.5
10004 游成伟 59.5
10006 Jerry 100

2)删除Jerry
3)修改:游成伟成绩为66
4)查询:升序/降序

二 在Qt中使用Sqlite数据库
QT += sql
1 建立QT程序和数据库连接:QSqlDatabase
//添加数据库驱动
QSqlDatabase db =
QSqlDatabase::addDatabase(“QSQLITE”);
//设置数据库文件名字
db.setDatabaseName(“test.db”);
//打开数据库
bool ok = db.open();
2 执行SQL语句:QSqlQuery
QSqlQuery query;
QString str=QString(“Sql语句字符串”);
query.exec(str);
3 获取查询结果集:QSqlQueryModel
QSqlQueryModel model;
model.setQuery(“SELECT语句”);

//显示查询结果
QTableView view;
view.setModel(&model);

案例:学生成绩管理系统
工程名:Student
类名:StudentDialog
界面设计:
组合框(comboBox)
valueComboBox、condComboBox
按钮(PushButton):
sortButton(排序)、insertButton(插入)
deleteButton(删除)、updateButton(修改)
行编辑(LineEdit)
idEdit、nameEdit、scoreEdit

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值