sqlite常用操作

  • 一、数据库简介
  • 二、Sqlite数据库
  • 三、创建数据表
  • 四、删除数据表
  • 五、向数据表插入数据
  • 六、从数据表中删除数据
  • 七、修改数据表中已存在的数据
  • 八、查询数据表中的数据
  • 九、Qt应用程序中使用Sqlite数据
  • 练习:QT中使用Sqlite学生管理系统

一、数据库简介

  1. 概念
    数据库是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余特性,是与应用程序彼此独立的数据集合。

  2. 相关术语
    DB:数据库(database)
    DBA:数据库管理员
    RDB:关系式数据库
    DBMS:数据库管理系统

  3. 常见的数据库
    甲骨文的Oracle
    IBM的DB2
    微软的Sqlserver
    Sun的Mysql
    开源的Sqlite

  4. 数据库操作语言(SQL)

二、Sqlite数据库




  1. 常用的sqlite自身配置和格式显示相关指令
命令 含义
.help //查看这些指令的帮助信息
.exit或.quit //退出数据库回到控制终端
.open testDB.db //打开testDB.db数据库文件
.database //查看数据库名字和对应的文件名
.table //查看数据库中数据表的名字
.mode MODE //设置数据表显示模式,MODE:list(默认)/column/tab/html…
.header on //显示数据表的表头(列名)
.schema //查看数据表创建时的详细信息
.nullvalue “NULL” //设置数据表空白位置显示"NULL"
  注意:清屏"ctrl+L"执行"SELECT * FROM company;"可以查看company数据中所有的数据**可以将上述指令写入配置文件中**,将来重新进入数据库界面时会自动执行。vim  /home/tarena/.sqliterc  .mode tab.header on.nullvalue "NULL"

三、创建数据表

语法:
CREATE TABLE 表名 (列名1 数据类型 [约束],列名2 数据类型 [约束],…)
常用数据类型:INT(整型数) TEXT(字符串) REAL(浮点数)
常用约束:
NOT NULL:非空约束,表示该类数据不能为空
PRIMARY KEY:主键约束,表示该列数据唯一,可以加快对数据的访问

   sqlite> CREATE TABLE student (...> id INT NOT NULL PRIMARY KEY,...> name TEXT NOT NULL,...> score REAL NOT NULL );sqlite> .table //查看已存在数据表名字company  student

四、删除数据表

语法:
DROP TABLE 表名;

注:
慎用,数据表一旦删除,里面所包含的数据也将随之消失!

eg:

    sqlite> .tablecompany  studentsqlite> DROP TABLE student;sqlite> .tablecompany

五、向数据表插入数据

语法
INSERT INTO 表名 (列名1,列名2,…) VALUES(数值1,数值2,…);

eg:

  sqlite> INSERT INTO company...> (id,name,age,address,salary)...> VALUES(10018,'貂蝉',22,'山东',13000.5);sqlite> SELECT * FROM company; sqlite> INSERT INTO company...> (name,id,age,salary)...> VALUES('小乔',10019,21,12000);sqlite> INSERT INTO company...> VALUES(10021,'孙尚香',26,'江南',9000);

六、从数据表中删除数据

语法
DELETE FROM 表名 WHERE 条件表达式; //删除满足条件的若干条数据
DELETE FROM 表名 WHERE 条件1 and 条件2;//删除同时满足两个条件的数据
DELETE FROM 表名 WHERE 条件1 or 条件2;//删除满足条件或条件2的数据

注:如果有多个条件可以使用逻辑与(and)或者逻辑或(or)连接

eg:

   sqlite> DELETE FROM company...> WHERE id = 10029;sqlite> DELETE FROM company...> WHERE age>25 and address='江南';

七、修改数据表中已存在的数据

语法
UPDATE 表名 SET 列名1=新数值,列名2=新数值,… WHERE 条件表达式;
eg:

    sqlite> UPDATE company ...> SET age = 22...> WHERE id=10012;sqlite> UPDATE company...> SET salary=salary+2000...> WHERE age>=28 and age<=35;

八、查询数据表中的数据


语句
SELECT 列名1,列名2,… FROM 表名;
SELECT 列名1,列名2,… FROM 表名 WHERE 条件表达式;
SELECT 列名1,列名2,… FROM 表名 WHERE 条件表达式 ORDER BY 列名 排序方式;
注:排序方式关键字ASC(升序) DESC(降序)

eg:
sqlite> SELECT salary,name FROM company;

sqlite> SELECT * FROM company
…> WHERE salary<5000 or salary>10000;

sqlite> SELECT * FROM company
…> WHERE salary<5000 or salary>10000
…> ORDER BY salary DESC;

创建一个学生成绩的数据表(stduent),里面包含列的字段依次是学号(ID),姓名(Name),成绩(Score),依次完成下面操作:
1)向数据表插入以下数据
ID Name Score
10001 游成伟 88
10002 闵卫 90.5
10005 Jerry 100
10004 孟健 59.5
10003 Tom 99

insert into student (id,name,sorce)values(10001,'张三',88),(10002,'李四',99),(10003,'闵卫',100),(10004,'游成为',59.5);

INSERT INTO Student (. . .) VALUES(. . . );
2)删除Jerry一条数据
3)修改孟健成绩: 59.5–>95.5
4)排序查询

九、Qt应用程序中使用Sqlite数据

  1. 建立Qt应用程序和数据库连接 QSqlDatabase
    添加数据库驱动
    QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);

    设置数据库名字(对于sqlite就是数据库文件名)
    db.setDatabaseName(“testDB.db”);

    打开数据库
    bool ok = db.open();

  2. 执行SQL语句 QSqlQuery

    创建QSqlQuery对象
    QSqlQuery query;

**准备要执行的SQL语句字符串**QString str = QString("SQL语句");**执行sql语句**query.exec(str);
  1. 保存查询结果集 QSqlQueryModel
**创建QSqlQueryModel对象**QSqlQueryModel *model = new QSqlQueryModel;

执行SELECT语句并保存结果集到model
model->setQuery(“SELECT语句”);

将model保存结果显示图形控件(QTableView)上
QTableView *view = new QTableView;
view->setModel(model);
view->show();

练习:QT中使用Sqlite学生管理系统

添加 sql

添加两个Combo Box和一个pushbutton ,双击combo box 可以编辑

添加 table view 和 三个line edit ,三个label标签,三个pushbutton
三个line edit命名为:idEdit 、nameEdit、scoreEdit
三个button命名为:insertButton 、deleteButton、updateButton

(1)布局可以自由布局:这些选择上面和最低三个做水平布局
(2)学号姓名成绩输入栏右加弹簧,之后选择做栅格布局
(3)做好整体做一个垂直布局

添加槽函数
四个槽函数 插入 删除 修改 排序
选择默认的clicked()

测试

代码:studentdialog.h 、studentdialog.cpp
代码1:studentdialog.h

#ifndef STUDENTDIALOG_H
#define STUDENTDIALOG_H#include <QDialog>
//工程文件需要添加QT +=sql
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlError>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class StudentDialog; }
QT_END_NAMESPACEclass StudentDialog : public QDialog
{Q_OBJECTpublic:StudentDialog(QWidget *parent = nullptr);~StudentDialog();
private://创建或连接sqlite数据库void createDB();//创建学生成绩数据库void createTable();//查询和显示数据表的内容void queryTable();private slots://插入void on_insertButton_clicked();//删除void on_deleteButton_clicked();//修改void on_updateButton_clicked();//排序void on_sortButton_clicked();private:Ui::StudentDialog *ui;QSqlDatabase db;  //建立应用程序和数据库连接QSqlQueryModel model;  //保存查询的结果集
};
#endif // STUDENTDIALOG_H

代码2:studentdialog.cpp

#include "studentdialog.h"
#include "ui_studentdialog.h"StudentDialog::StudentDialog(QWidget *parent): QDialog(parent), ui(new Ui::StudentDialog)
{ui->setupUi(this);createDB();createTable();queryTable();
}StudentDialog::~StudentDialog()
{delete ui;
}//创建或连接sqlite数据库
void StudentDialog::createDB()
{//添加sqlite数据驱动db = QSqlDatabase::addDatabase("QSQLITE");//设置数据库名字,如果 student.db 不存在会自动创建db.setDatabaseName("student.db");//打开数据库if(db.open()== false){qDebug()<<db.lastError().text();}else{qDebug()<<"创建或连接数据库成功!";}
}
//创建学生成绩数据库
void StudentDialog::createTable()
{//准备创建数据表sql语句的字符串QString str = QString("CREATE TABLE student(""id INT PRIMARY KEY NOT NULL,""name TEXT NOT NULL,""score REAL NOT NULL)");//QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"创建数据表成功!";}
}
//查询和显示数据表的内容
void StudentDialog::queryTable()
{//准备查询的sql语句字符串QString str = QString("SELECT *FROM student");//执行查询语句并保存结果集到model对象model.setQuery(str);//将结果集显示到界面ui->tableView->setModel(&model);
}//插入
void StudentDialog::on_insertButton_clicked()
{//准备插入操作的sql语句字符串int id =ui->idEdit->text().toInt(); //学生学号QString name = ui->nameEdit->text();//学生姓名double score = ui->scoreEdit->text().toDouble(); // 学生成绩QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score);//执行sql语句QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"插入数据成功!";queryTable();}
}//删除:根据ID删除一条数据
void StudentDialog::on_deleteButton_clicked()
{//准备删除操作的sql语句字符串int id =ui->idEdit->text().toInt(); //学生学号QString str = QString("DELETE FROM student WHERE id =%1").arg(id);//执行sql语句QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"删除数据成功!";queryTable();}
}//修改根据ID修改成绩
void StudentDialog::on_updateButton_clicked()
{//准备修改操作的sql语句字符串int id =ui->idEdit->text().toInt(); //学生学号double score = ui->scoreEdit->text().toDouble(); // 学生成绩QString str = QString("UPDATE student SET score=%1 WHERE ID=%2").arg(score).arg(id);//执行sql语句QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"修改数据成功!";queryTable();}
}//排序
void StudentDialog::on_sortButton_clicked()
{//准备的sql语句字符串QString value = ui->valuecomboBox->currentText(); //获取排序列名QString condition; //排序方式:升序(0)/降序(1)if(ui->condcomboBox->currentIndex() == 0){condition = "ASC";}else{condition = "DESC";}QString str = QString("SELECT *FROM student ORDER BY %1 %2").arg(value).arg(condition);//执行查询语句并保存结果集到model对象model.setQuery(str);//将结果集显示到界面ui->tableView->setModel(&model);
}

sqlite常用操作相关推荐

  1. 【sqlite常用操作SQL语句】

    目录 1.创建一个新的数据表 2.在已有的数据表中增加一个新的字段(列) 3. 在已有的数据表中增加一条新的记录(行) 1.创建一个新的数据表 "create table user(id i ...

  2. 【node】Sequelize常用操作、基本增删改查

    [node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...

  3. Android内部自带的SQLite数据库操作dos命令

    1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...

  4. C# SQLite 数据库操作语句与文件视图管理器

    //sqlite数据库视图管理器 SQLiteSpy是一款专业的SQLite数据库管理,主要用于读取sqlite数据库,建立新的SQL查询,视图,复制和删除表.编辑单元格,以及查看索引,触发器和排序规 ...

  5. sqlite+php+函数大全,Sqlite 常用函数 推荐

    Sqlite 常用函数 推荐 更新时间:2009年09月25日 23:21:57   作者: Sqlite 常用函数,在实际开发中,经常遇的到. 1 .打开数据库: 说明:打开一个数据库,文件名不一定 ...

  6. TensorFlow常用操作:代码示例

    1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...

  7. Ubuntu 常用操作

    Ubuntu常用操作 外观操作 修改应用icon图标 终端美化 内存管理 内存查询 分区管理 日志清理 操作执行 自动执行多条命令 外观操作 修改应用icon图标 在/usr/share/applic ...

  8. IOS沙盒Files目录说明和常用操作

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  9. 用Python轻松搞定Excel中的20个常用操作

    来源 |早起Python(ID: zaoqi-python) Excel与Python都是数据分析中常用的工具,本文将使用动态图(Excel)+代码(Python)的方式来演示这两种工具是如何实现数据 ...

最新文章

  1. Linux执行df -h等操作卡住问题
  2. HDU 4628 Pieces(DP + 状态压缩)
  3. android 在xml文件中引用自定义View
  4. 项目经理的十二条规则
  5. 2018年高教社杯全国大学生数学建模竞赛题目问题B 智能RGV的动态调度策略
  6. wxWidgets:实时传输时间RTTI
  7. 李宏毅机器学习课程1~~~Introduction Regression
  8. 服务器ios文件,ios 文件到服务器
  9. 2.5 结构化程序设计的方法
  10. C#重绘TabControl控件的源码(转)
  11. 安装Discuz论坛
  12. html标签属性值拼接,js拼接url以及为html某标签属性赋值
  13. 时间定位表达式-用于时间的加、减调整
  14. 基于JSP+SERVLET的新闻发布系统(一)
  15. ie8加载js太慢_ie8加载不了javascript怎么办?
  16. ubuntu16.04版本系统清理和美化
  17. 编码器的集电极输出、电压输出、互补输出和线性驱动输出
  18. 搭建Hadoop集群后一直使用的start-all.sh到底是个什么操作
  19. Boot(重点SCSS☆☆☆☆☆)(day03)
  20. UE4 让材质的UV动起来

热门文章

  1. CatBoost 是如何自动高级处理类别型特征的?
  2. nginix配置某个域名跳转到另一个域名
  3. python控制电脑唤醒键_大神教你用Python实现Wake On Lan远程开机功能
  4. 基于stm32f10x单片机USB流程理解
  5. 安装AdventureWorks、NorthWind 和Pubs示例数据库
  6. 汇编学习笔记---2.2物理地址计算
  7. 没学过画画可以学服装设计吗?
  8. Java高级-云课堂后端项目实战 网易云课堂
  9. 在idea中移除子模块如何Moudle后重新导入
  10. 如何锻炼孩子的逻辑思维?编程教育是绝佳媒介