sqlite3_open
函数原型
int sqlite3_open(char *filename,sqlite3 **db);
首先介绍sqlite3类型,这个类型是一个表示打开的数据库句柄,函数的作用是打开一个数据库,并将数据库的句柄赋值给db,当数据库不存在时会自动创建一个新的数据库。
通常的使用方式:
sqlite3 *db;
char *filename="db.db"
sqlite3_open(filename,&db);
这个函数的返回值表示打开或者创建数据库是否成功,如果返回SQLITE_OK表示成功。
#include"head.h"
int main()
{
sqlite3 *db;
char *filname="newdb.db";
if((SQLITE_OK==sqlite3_open(filname,&db)))
{
printf("create suscess\n");
}
return 0;
}
测试:
sun@ubuntu:~/project$ ./sqlite3_2
create suscess
sun@ubuntu:~/project$ ls
add.c client1 db.db head.h mid.o server1.c sqlite3_1 sqlite3_2.c str1.c test1.c test.o
add.o client11 gethostbyname Makefile newdb.db server2.c sqlite3_1.c sqlite3.c test test1.o user
am.h client1.c gethostbyname.c mid.c server1 sqlite3 sqlite3_2 str1 test1 test.c
sun@ubuntu:~/project$
可以看到创建一个newdb.db的数据库
sqlite3_close函数
函数原型
int sqlite3_close(sqlite3 *db);
表示关闭一个数据库,关闭之后便不能根据这个句柄来操作数据库了。
sqlite3_exec函数
函数原型
int sqlite3_exec(
sqlite3 *db, //表示打开的数据库句柄
char *sql, //表示需要执行的sql语句
sqlite_callback, //回调函数
void * , //表示传递到回调函数的参数
char **errmsg //表示发送错误时返回的错误信息
);
当我们执行插入修改等没有返回的sql语句时可以这样使用这个函数
#include"head.h"
int main()
{
sqlite3 *db;
char *filename="newdb1.db";
sqlite3_open(filename,&db);
char *sql1="create table info(id int,name varchar(255),age int,sex varchar(255))";
char *sql2="insert into info values(1,'sun',22,'man')";
sqlite3_exec(db,sql1,NULL,NULL,NULL);
sqlite3_exec(db,sql2,NULL,NULL,NULL);
return 0;
}
这个程序的结果表示创建一个newdb1.db的数据库并且在这个数据库中创建一个info的表,在这个表中插入一行信息。
结果:
sun@ubuntu:~/project$ gcc sqlite3_3.c -o sqlite3_3 -lsqlite3
sun@ubuntu:~/project$ ./sqlite3_3
sun@ubuntu:~/project$ sqlite3 newdb1.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> select * from info;
1|sun|22|man
sqlite>
sqlite3_get_table函数
函数原型
int sqlite3_get_table(
sqlite3 *db, //打开数据库的句柄
const char *zSql, //执行的查询的sql语句
char ***pazResult, //将查询的结果保存到这里
int *pnRow, //查寻有多少条数据
int *pnColumn, //每条数据有多少项
char **pzErrmsg //如果出错会将错误保存到这个里
);
下面是一个例子来查询表中得数据
#include"head.h"
int main()
{
sqlite3 *db=NULL;
int row,column;
char **result;
char *sql="insert into info values(2,'zhang',32)";
char *sql1="create table info(id int,name varchar(255),age int)";
sqlite3_open("db.db",&db);
sqlite3_exec(db,sql1,NULL,NULL,NULL);
sqlite3_exec(db,sql,NULL,NULL,NULL);
sql="select * from info";
sqlite3_get_table(db,sql,&result,&row,&column,NULL);
printf("row %d\ncolumn %d\n",row,column);
int i,j;
for(i=0;i<row;++i)
{
for(j=0;j<column;++j)
printf("%s ",result[i*column+j]);
printf("\n");
}
sqlite3_close(db);
return 0;
}
结果:
sun@ubuntu:~/project$ gcc sqlite3_1.c -o sqlite3_1 -lsqlite3
sun@ubuntu:~/project$ ./sqlite3_1
row 1
column 3
id name age
sun@ubuntu:~/project$ ./sqlite3_1
row 2
column 3
id name age
2 zhang 32
sun@ubuntu:~/project$ ./sqlite3_1
row 3
column 3
id name age
2 zhang 32
2 zhang 32
sun@ubuntu:~/project$ ./sqlite3_1
row 4
column 3
id name age
2 zhang 32
2 zhang 32
2 zhang 32
参考博客:https://blog.csdn.net/zouleideboke/article/details/73649886