目录
一、sqlite优点
1、零配置:SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复
2、紧凑:SQLite是被设计成轻量级,自包含的。一个头文件,一个lib库,你就可以使用关系数据库了,不用任何启动任何系统进程。一般来说,整个SQLITE库小于225KB。
3、可移植:它是运行在Windows,Linux,BSD,Mac OSX和一些商用Unix系统,比如Sun的Solaris,IBM的AIX,同样,它也可以工作在许多嵌入式操作系统下,比如QNX,VxWorks,PalmOS, Symbin和Windows CE。
SQLite下载地址:https://www.sqlite.org/download.html
源码文件如下:
二、Linux命令行下使用数据库
1、编译sqlite3
2、测试数据库
.dump --查看表结构
.quit --退出
.show --显示
.tables --显示所有的表
3. SQL语句--数据库操作(创建, 插入,删除,查询数据, 更新...)
(1)创建表格语句 create table name(字段1 类型1 , 字段2 类型2 ...);
(2)插入数据语句 insert into 表名 value(数据1, 数据2, 数据3) ;
(3)查询表格数据 select (字段名--多个用逗号隔开,如果是所有就用*) from 表名;
(4)条件查询select (字段名--多个用逗号隔开,如果是所有就用*) from 表名 where 条件
(5) 更新数据 update 表名 set 字段名=value,字段名=value where 条件;
(6) 删除数据 delete from 表名; ---删除整个表的数据
删除数据 delete from 表名 where 条件;
三、C++中使用数据库
使用sqlite3里面的API接口编程
操作流程:
1.打开数据库 sqlite3_open
int sqlite3_open( const char *filename, sqlite3 **ppDb);
参数:const char *filename --打开数据库文件名称比如demo.db
sqlite3 **ppDb --存储打开数据库后的句柄
返回值: 成功返回SQLIET_OK
2.执行sql语句 sqlite3_exec
int sqlite3_exec( sqlite3*, const char *sql, int (*callback)(void*,int,char**,char**) ,void *, char **errmsg );
参数:sqlite3*, 句柄
const char *sql, 执行sql语句
int (*callback)(void*,int,char**,char**), 查询回调函数
void *, 传给回调函数第一个参数
char **errmsg 存储错误
返回值: 成功返回SQLIET_OK
int (*callback)(void*,int,char**,char**), 查询回调函数
void * ---sqlite3_exec传入
nt ---数据列数
char**---数据内容
char**---数据名称
int callback(void*arg, int col ,char** value, char** name)
{
}
3.关闭数据库sqlite3_close
int sqlite3_close(sqlite3*);
返回值: 成功返回SQLIET_OK
#include <iostream>
#include "sqlite3.h"
using namespace std;
int main()
{
//打开数据库
sqlite3 *ppdb = NULL;
int ret = sqlite3_open("demo.db",&ppdb);
if(ret != SQLITE_OK)
{
cout<<"open error"<<endl;
}
//创建表格
const char * sql = "create table my(id int , name text)";
ret = sqlite3_exec(ppdb, sql,NULL, NULL,NULL);
if(ret != SQLITE_OK)
{
cout<<"exec error"<<endl;
}
//关闭数据库
sqlite3_close(ppdb);
return 0;
}
四、QT中使用数据库
在Qt工程文件中添加QT += sql
QSqlDatabase
QSqlQuery
QSqlRecord
QSqlResult
QSqlError
QSqlTableModel
1、创建一个QSqlDataBase对象---添加数据库驱动()
QSqlDatabase addDatabase(驱动, 连接名);
如果添加数据库驱动设置了连接名称, 那么后面操作数据库的时候要指定对应的db
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "HD");
//设置数据库名称
db.setDatabaseName("demo.db");
if(!db.open())
{
qDebug()<<"open error";
}
2、操作数据(创建表格)
QString sql = QString("create table %1(id integer primary key, name text)").arg(ui->tableNameEdit->text());
QSqlQuery query(QSqlDatabase::database("HD"));
query.exec(sql);