学习视频 <— 众所周知B站是中国最大的学习网站 2333
开发环境已经配置好了
点击下载
使用VM虚拟机打开下载好的系统镜像就开始“愉快地”嵌入式开发啦 : )
虚拟机登录密码为: pass
已经安装了eclipse,可以使用C/C++编程进行嵌入式开发
如果使用的是自己的镜像,安装sqlite3 需要两个命令即可
sudo apt-get install sqlite
sudo apt-get install libsqlite3-dev
链接里使用的Linux镜像是用CentOS软件安装,所以不是apt-get命令而是yum命令
yum install install sqlite
搜索相关的库文件
yum search sqlite3
yum install sqlite-devel.i686
yum install sqlite-devel.x86_64
安装完成后在命令行里输入
sqlite3
接下来罗列几个基础操作的效果,更多更具体的方法详见
SQLite 命令大全菜鸟教程
嵌入式教案
sqlite3 student.db
首先创建一个数据库:student.db
可以通过输入.database列出数据库
然后输入创建数据表语句
create table student (id int primary key,name char,age int,sex char);
insert into 表名 values (值1,值2,值3,值4);
没有返回错误信息则插入成功
insert into student values (0,'zhang0',20,'m');
在vi编辑器环境中编译时使用
gcc xxx.c -o t -lsqlite3
API文档
菜鸟教程
嵌入式教案
#include
#include
//这里配置数据库的路径
#define DATABASE "/home/ben/c.d/test.db"
//增加
void do_insert(sqlite3 *db)
{
int id;
char name[32]={};
char sql[128]={};
char *errmsg;
printf("请输入id:");
scanf("%d",&id);getchar();
printf("请输入姓名:");
scanf("%s",name);getchar();
sprintf(sql,"insert into stu values(%d,'%s');",id,name);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("插入一条数据失败,错误:%s\n",errmsg);
}
else
{
printf("插入一条数据成功\n");
}
}
//删除
void do_delet(sqlite3 *db)
{
int id;
char sql[128]={};
char *errmsg;
printf("请输入id:");
scanf("%d",&id);getchar();
sprintf(sql,"delete from stu where id=%d;",id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("删除一条数据失败,错误:%s\n",errmsg);
}
else
{
printf("删除一条数据成功\n");
}
}
//修改
void do_update(sqlite3 *db)
{
int id;
char name[32]={};
char sql[128]={};
char *errmsg;
printf("请输入要修改数据的id:");
scanf("%d",&id);getchar();
printf("请输入新的姓名:");
scanf("%s",name);getchar();
sprintf(sql,"update stu set name='%s' where id=%d;",name,id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("更新一条数据失败,错误:%s\n",errmsg);
}
else
{
printf("更新一条数据成功\n");
}
}
//查询回调函数
int callback(void *para, int f_num, char **f_value, char **f_name)
{
int i;
for(i=0; i<f_num; i++){
printf("%-8s",f_value[i]);
}
printf("\n");
return 0;
}
//查询(回调方法)
void do_query(sqlite3 *db)
{
char sql[128]={};
char *errmsg;
sprintf(sql,"select * from stu");
if(sqlite3_exec(db,sql,callback,NULL,&errmsg)!=SQLITE_OK)
{
printf("查询数据失败,错误:%s\n",errmsg);
}
else
{
printf("查询结束\n");
}
}
//查询方法2(不使用回调)
void do_query2(sqlite3 *db)
{
char sql[128]={};
char *errmsg;
char **result;
int nrow;
int ncloumn;
int i,j,index;
sprintf(sql,"select * from stu;");
if(sqlite3_get_table(db,sql,&result,&nrow,&ncloumn,&errmsg)!=SQLITE_OK)
{
printf("查询数据失败,错误:%s\n",errmsg);
}
else
{
printf("查询成功\n");
}
for(j=0;j<ncloumn;j++)
{
printf("%-8s",result[j]);
}printf("\n");
index=ncloumn;
for(i=0;i<nrow;i++)
{
for(j=0;j<ncloumn;j++)
{
printf("%-8s",result[index++]);
}
printf("\n");
}
//一定要记得释放内存空间
sqlite3_free_table(result);
}
int main(int argc, char* argv[])
{
int cmd;
sqlite3 *db;
if(sqlite3_open(DATABASE, &db)!=SQLITE_OK){
printf("Can't open database: %s\n", sqlite3_errmsg(db));
return -1;
}else{
printf("Opened database successfully\n");
}
while(1)
{
printf("\n\n*********************************\n");
printf("1.增加 2.删除 3.修改 4.查找 5.关闭\n");
printf("*********************************\n");
printf("请输入您的操作数:");
scanf("%d",&cmd);
getchar();
switch(cmd)
{
case 1:
do_insert(db);
break;
case 2:
do_delet(db);
break;
case 3:
do_update(db);
break;
case 4:
do_query2(db);
break;
case 5:
sqlite3_close(db);
printf("\n系统已退出,欢迎您下次使用!\n");
exit(0);
default:
break;
}
}
return 0;
}