1.sqlite3基本命令
//命令以.开头
sqltite3 my.db //打开my.db,不存在就创建
.help //帮助
.quit //退出
.database //显示打开的数据库
.table //显示数据库中的表
.schema //显示表的结构
2.sqlite3基本语句(SQL语句)
//sql语句以;结尾
//常见的数据类型:int,float,text(字符与字符串结合在一起)
create table xxx (name text,passwd text); //创建一张名为xxx的表,表中元素有两种,name与passwd,类型都为text。
insert into xxx values (‘tom’,‘ps666’); //向表xxx中插入数据,类型与数量要按顺序对应
delete from xxx where passwd='ps666'; //删除表中passwd为ps666的数据
update xxx set passwd='ps777' where name='tom'; //修改表xxx中name为tom的数据的passwd为ps777
select * from xxx; //查询表中所有数据
select *from xxx where name='tom'; //查询表中name元素为的数据
drop table xxx; //删除表
3.sqlite3接口函数
sqlite3_open(); //打开数据库
sqlite3_exec(); //执行sql语句
sqlite3_close(); //关闭数据库
sqlite3_get_table(); //查询
int sqlite3_open(const char *filename, sqlite3 **ppDb)
功能: 打开数据库
参数: filename:数据库路径名 ppDb:代指打开的数据库(打开的数据库句柄)
返回值: 成功返回 SQLITE_OK
失败返回 错误码
Others: 不存在,则创建
int sqlite3_exec(sqlite3* ppDb, const char *sql, sqlite_callback, void *data, char **errmsg)
功能: 执行sql语句
参数: ppDb:为刚才使用sqlite3_open打开的数据库链接
sql: sql语句
sqlite_callback:回调函数 用于查询 不关心写NULL
data: 回调函数的参数 不关心写NULL
errmsg:返回的错误信息
返回值: 成功返回0 失败返回错误码
int sqlite3_close(sqlite3 *ppDb);
功能: 关闭数据库
参数: ppDb:为刚才使用sqlite3_open打开的数据库链接
返回值: 成功返回0,失败返回-1
int sqlite3_get_table(sqlite3 *ppDb, const char *sql, char ***resultp, int*nrow, int *ncolumn, char **errmsg);
功能: 执行sql语句
参数: ppDb:为刚才使用sqlite3_open打开的数据库链接
sql: sql语句
resultp:查询的结果 例如:resultp[0]、resultp[1]、resultp[2]、resultp[3]
nrow: 查询到的记录数目
ncolumn:字段数目
errmsg:返回的错误信息
返回值: 成功返回0 失败返回错误码
/*===============================================
* 文件名称:sqlite3.c
* 创 建 者:
* 创建日期:2022年08月20日
* 描 述:
================================================*/
#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
int callback(void *para,int f_num,char **f_value,char **f_name)//回调函数,查2使用,一行调用一次回调函数
{
int i;
for(i=0;i<f_num;i++)//打印一列
{
printf("%s ",f_value[i]);
}
puts("就这?");
return 0;
}
int main(int argc, char *argv[])
{
sqlite3 *db;
int ret = sqlite3_open("./my.db",&db);
if(ret!=SQLITE_OK)
{
perror("sqlite3_open");
return -1;
}
//创建一张表
char sql[256]="create table if not exists score (name text,num int,score float);";
char *errmsg;
ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
if(ret<0)
{
printf("sqlite3_exec:%s\n",errmsg);
return -1;
}
//增删改
strcpy(sql,"insert into score values ('zhangsan',1,66.6);");//增
ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
if(ret<0)
{
printf("sqlite3_exec:%s\n",errmsg);
return -1;
}
strcpy(sql,"insert into score values ('lisi',2,77.7);");//增
ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
if(ret<0)
{
printf("sqlite3_exec:%s\n",errmsg);
return -1;
}
strcpy(sql,"update score set score=88.8 where score=66.6;");//改
ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
if(ret<0)
{
printf("sqlite3_exec:%s\n",errmsg);
return -1;
}
strcpy(sql,"delete from score where score=77.7");//删
ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
if(ret<0)
{
printf("sqlite3_exec:%s\n",errmsg);
return -1;
}
//查1
strcpy(sql,"select * from score;");
char **resultp;
int nrow,ncolmun,i,index=0;
ret = sqlite3_get_table(db,sql,&resultp,&nrow,&ncolmun,&errmsg);
if(ret<0)
{
printf("sqlite3_get_table:%s\n",errmsg);
return -1;
}
for(i=0;i<nrow+1;i++)
{
printf("%10s|%4s|%5s\n",resultp[index],resultp[index+1],resultp[index+2]);
index+=ncolmun;
}
//printf("nrow:%d nclomun:%d\n",nrow,ncolmun);
printf("----------------------------------\n");
//查2
strcpy(sql,"select * from score;");
ret = sqlite3_exec(db,sql,callback,NULL,&errmsg);
if(ret<0)
{
printf("sqlite3_exec:%s\n",errmsg);
return -1;
}
ret = sqlite3_close(db);
return 0;
}