马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.
数组、链表、变量-----》内存:步伐运行竣事、掉电数据丢失
文件----------------------》硬盘:步伐运行竣事、掉电数据不丢失
数据库: 专业存储数据、大量数据-----》硬盘
sqlite相干的命令
.tables 查看数据库中的表
.headers on/off 开启或者关闭表头
.mode column 列对齐
.width 列宽1 列宽2 设置每一列的列宽
.schema 表名 查看表的布局
sqlite的SQL语句
每个sql语句后面必须要有一个;
INTEGER : 整形
REAL: 浮点型
TEXT:文本类型,字符串
NULL : 空
1.创建表
create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型) ;
2. 插入数据
insert into 表名 values(值1, 值2, 值3);
3. 查询
select 列名1,列名2 from 表名;
select * from 表名;
条件查找:
select * from 表名 where 列 关系运算符 (> < = != >= <= and or);
like : 模糊匹配
% 可以通配多个字符
_ 只能通配一个字符
升序分列
select * from 表名 order by 列名 ASC;
降序分列:
select * from 表名 order by 列名 DESC;
4. 删除一行
delect from 表名 where 列名 关系运算符 值;
5. 删除一张表
drop 表名;
6. 修改
update 表名 set 列名=新值 where 列=值;
7. 设置主键值主动增长列
1. 主键值主动增长列的数据类型必须是INTEGER
2. 类名 INTEGER PRIMARY KEY AUTOINCREMENT,
8 .多表联查
内连接 INNER JOIN
外连接 LEFT OUTER JOIN
3. sqlite3提供的c/c++ API接口
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:打开数据库,如果不存在,则创建
参数:
filename : 数据库名称
ppDb :保存数据库句柄的地址
返回值:
成功:SQLITE_OK
失败:错误码
int sqlite3_exec(
sqlite3*pdb, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *arg, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:执行sql语句
参数:
pdb : 数据库句柄
sql : 要执行的sql语句的首地址
callback : 当执行select语句时,利用到
arg:当执行select语句时,利用到,通报给回调函数的第一个参数
errmsg :存储错误信息的地址
返回值:
成功:SQLITE_OK
失败:错误码
- #include<stdio.h>
- #include<sqlite3.h>
- int main(int argc,char *argv[])
- {
- sqlite3 *pdb;
- int ret = sqlite3_open("./sth.db",&pdb);
- if(ret != SQLITE_OK)
- {
- fprintf(stderr,"sqlite3_open fail:%s\n",sqlite3_errmsg(pdb));
- return -1;
- }
- char *sql = "create table if not exists class4(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL);";
- ret = sqlite3_exec(pdb,sql,NULL,NULL,NULL);
- if(ret != SQLITE_OK)
- {
- fprintf(stderr,"sqlite3_exec fail:%s\n",sqlite3_errmsg(pdb));
- sqlite3_close(pdb);
- return -1;
- }
- char *sql1 = "insert into class4 values(NULL,"zhangsan",99);";
- char *sql2 = "insert into class4 values(NULL,"lisi",89);";
- char *sql3 = "insert into class4 values(NULL,"wangwu",67);";
- sqlite3_exec(pdb,sql1,NULL,NULL,NULL);
- sqlite3_exec(pdb,sql2,NULL,NULL,NULL);
- sqlite3_exec(pdb,sql3,NULL,NULL,NULL);
- sqlite3_close(pdb);
- return 0;
- }
复制代码 int (*callback)(void*,int column_cnt,char**column_value,char**column_name),
int callback(void* arg, int , char **, char **);
功能:在利用sqlite3_exec执行select语句时, 每查找到一条数据,则调用一次回调
参数:
arg : sqlite3_exec通报的第4个参数
column_cnt: 查找到的数据的列数
column_value: 查找到的一行数据的每一列值的地址的聚集
column_name:查找到的一行数据的每一列列名的地址的聚集
返回值:
成功 :1 失败:0
注意:1.每找到一行,回调被触发一次
2. 回调函数必须返回0
- #include<stdio.h>
- #include<sqlite3.h>
- int flag = 0;
- int callback(void *arg,int column_cnt,char **column_value,char **column_name)
- {
- if(0 == flag)
- {
- for(int i = 0;i < column_cnt;++i)
- {
- printf("%s ",*(column_name + i));
- }
- printf("\n");
- flag = 1;
- }
- for(int i = 0;i < column_cnt;++i)
- {
- printf("%s ",*(column_value + i));
- }
- printf("\n");
- return 0;
- }
- int callback1(void *arg,int column_cnt,char **column_value,char **column_name)
- {
- printf("%s\n",*column_value);
- return 0;
- }
- int main(int argc,char *argv[])
- {
- sqlite3 *pdb;
- int ret = sqlite3_open("./sth.db",&pdb);
- if(ret != SQLITE_OK)
- {
- fprintf(stderr,"sqlite3_open fail:%s\n",sqlite3_errmsg(pdb));
- return -1;
- }
- char *sql = "select name from class4;";
- ret = sqlite3_exec(pdb,sql,callback1,NULL,NULL);
- if(ret != SQLITE_OK)
- {
- fprintf(stderr,"sqlite3_exec fail:%s\n",sqlite3_errmsg(pdb));
- sqlite3_close(pdb);
- return -1;
- }
- sqlite3_close(pdb);
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|