数据库--嵌入式--C--在线词典(SQlite)
嵌入式---数据库--基本操作--笔记
目录
1.数据库的命令行操作(SQlite)
2.数据库的C语言操作
3.在线词典过程(数据库,网络并发,进程,C高级)
操作的意义:对数据的创建,增删改查
1, 数据库的安装
sudo dpkg -i *.deb(需要先下载安装包)
推荐: 在线安装:sudo apt-get install libsqlite3-dev sudo apt-get install sqlite3
2, 数据库命令
1)系统命令 , 都以'.'开头
.exit
.quit
.table 查看表
.schema 查看表的结构
2)sql语句, 都以‘;’结尾
1-- 创建一张表
create table stuinfo(id integer, name text, age integer, score float);
2-- 插入一条记录
insert into stu values(1001, 'zhangsan', 18, 80);
insert into stu(id, name) values(1002, 'lisi'); //部分字段插入
3-- 查看数据库记录
select * from stuinfo;
select * from stuinfo where score = 80;
select * from stuinfo where score = 80 and name= 'zhangsan';
select * from stuinfo where score = 80 or name='wangwu';
select name,score from stuinfo; 查询指定的字段
select * from stuinfo where score >= 85 and score < 90;
4-- 删除一条记录
delete from stuinfo where id=1003 and name='zhangsan';
5-- 更新一条记录
update stuinfo set age=20 where id=1003;
update stuinfo set age=30, score = 82 where id=1003;
6-- 删除一张表
drop table stuinfo;
7-- 增加一列
alter table stuinfo add column sex char;
8-- 删除一列(三步走)
create table stu as select id, name, score from stuinfo;
drop table stuinfo;
alter table stu rename to stuinfo;
数据库设置主键:
create table info(id integer primary key autoincrement, name vchar);
2,,基于C语言的,数据库操作
接口库函数:SQlite官网
返回值:成功为0 SQLITE_OK ,出错 错误码
if(sqlite3_ope (DATABASE,&db)!= SQLITE_OK){
printf("%s\n",sqlite3_errmsg(db));
return -1;
}else{
printf("da kai cheng gong\n");
}
sprintf(sql,"insert into stu values(%d,'%s','%s',%d)",bianhao,xingbie,xingming,fenshu);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
printf("%s\n",errmsg);
}else{
printf("cha ru cheng gong.\n");
}
查询回调函数:
int (*callback)(void* arg,int ncolumns ,char** f_value,char** f_name), /* Callback function */
功能:查询语句执行之后,会回调此函数
参数:arg 接收sqlite3_exec 传递来的参数
ncolumns 列数
f_value 列的值得地址
f_name 列的名称
返回值:0,
学生的分数管理系统
#include<stdio.h>
#include<stdlib.h>
#include<sqlite3.h>
#include<unistd.h>
#define DATABASE "stu.db"
int do_charu(sqlite3 *db){
char sql[128]={};
int bianhao;
char xingming[32]={};
char xingbie;
int fenshu;
char *errmsg;
printf("shu ru bian hao: ");
scanf("%d",&bianhao);
getchar();
printf("shu ru xingming: ");
scanf("%s",xingming);
getchar();
printf("shu ru xing bie(nan:1 nv:0): ");
scanf("%c",&xingbie);
getchar();
printf("shu ru fen shu: ");
scanf("%d",&fenshu);
getchar();
sprintf(sql,"insert into stu values(%d,'%s','%c',%d)",bianhao,xingming,xingbie,fenshu);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
printf("%s\n",errmsg);
}else{
printf("cha ru cheng gong.\n");
}
return 0;
}
int do_shanchu(sqlite3 *db){
int bianhao;
char sql[128]={};
char *errmsg;
printf("shu ru bian hao: ");
scanf("%d",&bianhao);
sprintf(sql,"delete from stu where bianhao=%d",bianhao);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
printf("%s\n",errmsg);
}else{
printf("shan chu cheng gong.\n");
}
return 0;
}
int callback(void *arg, int f_num, char ** f_value, char ** f_name){
int i=0;
for(i=0;i<f_num;i++){
printf("%-11s",f_value[i]);
}
printf("+++++++++++++++++++++++++++++++++++\n");
putchar(10);
return 0;
}
int do_chaxun(sqlite3 *db){
char *errmsg;
char sql[128]={};
sprintf(sql,"select *from stu;");
if(sqlite3_exec(db,sql,callback,NULL,&errmsg) != SQLITE_OK){
printf("%s\n",errmsg);
}else{
printf("cha xun cheng gong.\n");
}
return 0;
}
int do_chaxun1(sqlite3 *db){
char *errmsg;
char ** resultp;
int nrow;
int ncolumn;
if(sqlite3_get_table(db, "select * from stu", &resultp, &nrow, &ncolumn, &errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
return -1;
}
else
{
printf("query done.\n");
}
int i = 0;
int j = 0;
int index = ncolumn;
for(j = 0; j < ncolumn; j++)
{
printf("%-10s ", resultp[j]);
}
putchar(10);
for(i = 0; i < nrow; i++)
{
for(j = 0; j < ncolumn; j++)
{
printf("%-10s ", resultp[index++]);
}
putchar(10);
}
return 0;
}
int do_gengxin(sqlite3 *db){
char *errmsg;
char sql[128]={};
int bianhao;
int fenshu;
printf("shu ru bian hao: ");
scanf("%d",&bianhao);
getchar();
printf("shu ru genggai de fen shu: ");
scanf("%d",&fenshu);
getchar();
sprintf(sql,"update stu set fenshu=%d where bianhao =%d",fenshu ,bianhao);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
printf("%s\n",errmsg);
}else{
printf("geng xin wan cheng.\n");
}
return 0;
}
int main(int argc,const char *argv[]){
sqlite3 *db;
char *errmsg;
int n=0;
if(sqlite3_open (DATABASE,&db)!= SQLITE_OK){
printf("%s\n",sqlite3_errmsg(db));
return -1;
}else{
printf("da kai cheng gong\n");
}
if(sqlite3_exec(db,"create table if not exists stu(bianhao int,xingming char,xingbie char,fenshu int);",NULL,NULL,&errmsg) != SQLITE_OK){
printf("%s\n",errmsg);
}else{
printf("chuang jian cheng gong.\n");
}
while(1){
printf("*******************************************************\n");
printf("1.charu 2.shanchu 3.chaxun 4.gengxin 5.tuichu\n");
printf("*******************************************************\n");
printf("qing shu ru: ");
scanf("%d",&n);
getchar();
switch(n){
case 1:
do_charu(db);
break;
case 2:
do_shanchu(db);
break;
case 3:
// do_chaxun(db);
do_chaxun1(db);
break;
case 4:
do_gengxin(db);
break;
case 5:
sqlite3_close(db);
exit(0);
break;
default:
printf("zhi ling cuo wu.\n");
}
}
}
3.在线词典(数据库,网络并发,进程,C高级)
更多推荐
所有评论(0)