Linux下Sqlite3数据库的基本操作

简要介绍sqlite3数据库在Linux操作系统下编程开发的基本操作:

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"


typedef struct Data
{
int Id;
char* Name;
char* Num;
}* MyData;


int callback(void*,int,char**,char**);//回调函数


int main(void)
{
int res;
char* errmsg = NULL;
sqlite3* db = NULL;
char sql[100] = {0};
MyData mydata = (MyData)malloc(sizeof(MyData));

//打开或创建数据库
if((res = sqlite3_open("test.db",&db)) != SQLITE_OK)
{
printf("open or create test.db error!\n");
exit(1);
}


//创建一个表
sprintf(sql,"create table student(Id integer,Name text,StudentId text)");
if((res = sqlite3_exec(db,sql,NULL,NULL,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}


//向表中插入数据1
sprintf(sql,"insert into student values(1,'zhangsan','100')");
if((res = sqlite3_exec(db,sql,NULL,NULL,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}


//向表中插入数据2
sprintf(sql,"insert into student values(2,'lisi','101')");
if((res = sqlite3_exec(db,sql,NULL,NULL,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}


//向表中插入数据3
sprintf(sql,"insert into student values(3,'wanger','102')");
if((res = sqlite3_exec(db,sql,NULL,NULL,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}


//按条件在表中查找数据
sprintf(sql,"select * from student where Name=='wanger'");
if((res = sqlite3_exec(db,sql,callback,mydata,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}
printf("%d\t%s\t%s\n",mydata->Id,mydata->Name,mydata->Num);


//删除表中数据3
sprintf(sql,"delete from student where Name=='wanger'");
if((res = sqlite3_exec(db,sql,NULL,NULL,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}


//按条件修改表中数据
sprintf(sql,"update student set Name='seu' where StudentId='100'");
if((res = sqlite3_exec(db,sql,NULL,NULL,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}
sprintf(sql,"select * from student where StudentId=='100'");
if((res = sqlite3_exec(db,sql,callback,mydata,&errmsg)) != SQLITE_OK)
{
printf("%s\n",errmsg);
exit(1);
}
printf("%d\t%s\t%s\n",mydata->Id,mydata->Name,mydata->Num);


sqlite3_close(db);
free(mydata);


return 0;
}


int callback(void* pData,int nCount,char** pValue,char** pName)
{
//数据类型强制转换
MyData myData = NULL;
myData = (MyData)pData;


myData->Id = (int)atoi(pValue[0]);
myData->Name = pValue[1];
myData->Num = pValue[2];


return 0;
}


编译时需要加上sqlite的链接库:-I /usr/local/sqlite3/include -L /usr/local/sqlite3/lib -lsqlite3 -lm












  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值