数据库sqlite3的详细知识参考http://www.runoob.com/sqlite/sqlite-create-database.html或官方网站http://www.sqlite.org/
sqlite3的安装不做介绍,可以从上面的网站查询相关信息
1、创建数据库
创建数据库的命令很简单 sqlite3 name.db
创建一个名字为stu.db的数据库
2、常用命令
sqlite3命令分为两类,系统命令,以 "."开头。普通命令 ,以";"结束
常用的系统命令
.schema 查看表的结构
.quit 退出数据库
.exit 退出数据库
.help 查看帮助信息
.databases 查看数据库
.tables 显示数据库中所有的表的表名
.quit 退出数据库
.exit 退出数据库
.help 查看帮助信息
.databases 查看数据库
.tables 显示数据库中所有的表的表名
上述几个命令比较常用,练习几遍也就记住了
常用的普通命令:
(1)创建一个表
格式:create table 表名(字段名称1 字段类型,字段名称2 字段类型, ....);
可以添加关键字PRIMARY KEY,表示这个字段是关键字段,不允许重复,比如我们在某个网站注册时不允许有相同的用户名。
创建一个学生信息表,表中信息为id,name,sex,score
(2)删除一张表
格式:drop table 表名;
创建一个学生信息表stuinfor2再删除
(3)向表中添加信息
格式: insert into 表名 values (字段值1,字段值2,...);
添加三条信息
(4)查询信息
格式: select 字段值1,字段值2,... from 表名
查询stuinfor表中的id和name信息
查询表中所有信息,select * from 表名
(5)删除信息:
格式:delete from 表名 where 字段值=要删除的字段号;
删除stuinfor表总id号为1002的信息(where是个好东西)
(6)修改信息
格式:update 表名 set 字段号1=字段值,字段号2=字段值 where 字段号=字段值;
修改id为1001的信息中名称为'lilei',score为77
上面四个就是信息的增删改查
(7)添加列
我们在原有列的基础上再添加其他信息
alter table 表名 add column 字段名 字段类型;
在stuinfor表中添加address信息
3、sqlite3 API接口
(1)创建/打开一个数据库
错误码的详细信息见sqlite错误码
(2)执行一条sql语句
回调函数
(3)查询数据库
也有专门的查询数据库的函数
pazResult返回的字符串数量实际上是(*pnRow+1)*(*pnColumn),因为前(*pnColumn)个是字段名,
注意:nrow的值不包括字段名,如果打印时用for (i = 0; i < nrow; i++)会打印出字段名,但是会少打印出一条符合条件的记录。
因此打印时要用 for (i = 0; i <nrow + 1; i++);将包括字段名在内的数据都打印出来。
因此打印时要用 for (i = 0; i <nrow + 1; i++);将包括字段名在内的数据都打印出来。
例程:添加一个学生信息系统,id号为关键字,提供增删改查功能
#include <stdio.h> //printf
//#include <arpa/inet.h> //inet_addr htons
//#include <sys/types.h>
//#include <sys/socket.h> //socket bind listen accept connect
//#include <netinet/in.h> //sockaddr_in
#include <stdlib.h> //exit
#include <unistd.h> //close
//#include <string.h>
//#include <sys/select.h>
//#include <sys/time.h>
//#include <sqlite3.h>
#include <sqlite3.h>
#define N 128
#define errlog(errmsg) do{\
perror(errmsg);\
printf("%s --> %s --> %d\n", __FILE__, __func__, __LINE__);\
exit(1);\
}while(0)
/*******************************
insert information
*******************************/
void do_insert(sqlite3 *db)
{
int id,score,rc;
char *errmsg =NULL;
char name[128]={};
char sql[128] ={0};
printf("please input id num\n");
scanf("%d",&id);
printf("please input name\n");
scanf("%s",name);
printf("please input score\n");
scanf("%d",&score);
sprintf(sql,"insert into stu values(%d,'%s',%d)",id,name,score );
if((rc = sqlite3_exec(db,sql,NULL,NULL,&errmsg))!=SQLITE_OK)
{
printf("%s\n", errmsg);
}
else
{
printf("add information successfuly \n");
}
}
/*******************************
inquiry information
*******************************/
void do_inquiry(sqlite3 *db)
{
int i,j,nrow,ncolumn,rc,n;
char *errmsg =NULL;
char **res=NULL;
if(rc = sqlite3_get_table(db,"select * from stu",&res,&nrow,&ncolumn,&errmsg)!=SQLITE_OK)
{
errlog("get table err");
}
n=0;
for(i=0;i<nrow+1;i++)
{
for(j=0;j<ncolumn;j++)
{
printf("%-11s",res[n++]);
}
putchar(10);
}
}
/*******************************
delete information
*******************************/
void do_delete(sqlite3 *db)
{
int id ,rc;
char sql [128]={};
char *errmsg =NULL;
printf("plesae input id num>>>>");
scanf("%d",&id);
sprintf(sql,"delete from stu where id=%d",id);
if((rc = sqlite3_exec(db,sql,NULL,NULL,&errmsg))!=SQLITE_OK)
{
printf("%s\n", errmsg);
}
else
{
printf("delete information successfuly \n");
}
}
/*******************************
insert information
*******************************/
void do_change(sqlite3 *db)
{
int id,score,rc;
char *errmsg =NULL;
char name[128]={};
char sql[128] ={0};
printf("please input id num\n");
scanf("%d",&id);
printf("please input name\n");
scanf("%s",name);
printf("please input score\n");
scanf("%d",&score);
sprintf(sql,"update stu set name ='%s' ,score = %d where id=%d",name,score,id);
if((rc = sqlite3_exec(db,sql,NULL,NULL,&errmsg))!=SQLITE_OK)
{
printf("%s\n", errmsg);
}
else
{
printf("delete information successfuly \n");
}
}
/*******************************
insert information
*******************************/
int main(int argc, const char *argv[])
{
int rc;
sqlite3 *db;
int data;
char *errmsg = NULL;
if((rc = sqlite3_open("stu.db",&db))!=SQLITE_OK)
{
errlog("open sqlite err");
}
/*creat tables*/
if((rc = sqlite3_exec(db,"create table stu( id int PRIMARY KEY, name char,score int)",NULL,NULL,&errmsg))!=SQLITE_OK)
{
printf("%s\n", errmsg);
}
else
{
printf("create table \n");
}
while(1)
{
printf("************************************************************\n");
printf("****1 insert ,2 inquiry,3 delete, 4change ,5quit************\n");
printf("************************************************************\n");
printf(">>>>>");
scanf("%d",&data);
switch(data)
{
case 1:
do_insert(db);
break;
case 2:
do_inquiry(db);
break;
case 3:
do_delete(db);
break;
case 4:
do_change(db);
break;
case 5:
return 0;
default:
break;
}
}
return 0;
}