一、数据库的安装
1、将压缩包sqlite-autoconf-3071700解压
2、进入文件夹,运行configure等待下载完成
3、下载完成后输入make指令,等待
4、make install,等待结束
5、找到/usr/lib目录下中的libsqlite3.so.0.8.6和libsqlite3.so.0文件,将其改名并将/usr/local中的对应libsqlite3.so.0.8.6和libsqlite3.so.0文件复制到系统下
二、数据库操作
#include <stdio.h>
#include <sqlite3.h>
int main()
{
sqlite3 *db; //声明sqlite关键结构指针
int ret = sqlite3_open("student.db", &db);
if( ret != SQLITE_OK )
{
printf ("数据库打开失败\n");
return -1;
}
char *errmsg;
const char *sq1 = "create table if not exists student(ID INTEGER, name TEXT, sex TEXT, age INTEGER, primary key(ID))";
// int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, char **errmsg );
ret = sqlite3_exec(db, sq1, NULL, NULL, &errmsg);
if( ret != SQLITE_OK )
{
printf ("exec1失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
int id = 1;
char name[20] = "gmf";
char sex[10] = "M";
int age = 18;
char str[100];
sprintf (str, "insert into student values(NULL, '%s', '%s', %d)", name, sex, age);
ret = sqlite3_exec(db, str, NULL, NULL, &errmsg);
if( ret != SQLITE_OK )
{
printf ("exec2失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
sqlite3_close(db);
return 0;
}
三、查询操作(其一)
#include <stdio.h>
#include <sqlite3.h>
int myfunc(void *v, int count, char **value, char **name)
{
int i;
for (i = 0; i < count; i++)
{
printf ("%-8s", value[i]);
}
printf("\n");
return 0;
}
// sqlite3_exec使用回调来执行 select 操作
int main()
{
sqlite3 *db; //声明sqlite关键结构指针
int ret = sqlite3_open("student.db", &db);
if( ret != SQLITE_OK )
{
printf ("数据库打开失败\n");
return -1;
}
char *errmsg;
const char *sq1 = "select * from student";
ret = sqlite3_exec(db, sq1, myfunc, NULL, &errmsg);
if( ret != SQLITE_OK )
{
printf ("exec1失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
sqlite3_close(db);
return 0;
}
四、查询操作(其二)
#include <stdio.h>
#include <sqlite3.h>
int main()
{
sqlite3 *db = NULL;
int ret = sqlite3_open("student.db",&db);
if(ret != SQLITE_OK)
{
printf("打开失败\n");
return -1;
}
char *errmsg;
const char *sq1 = "select * from student";
char **value = NULL;
int ncolumn;
int nrow;
ret = sqlite3_get_table(db, sq1, &value, &nrow, &ncolumn, &errmsg );
if(ret != SQLITE_OK)
{
printf("查询失败%s\n",errmsg);
sqlite3_free(errmsg);
return -1;
}
int i;
for(i = 0;i < nrow*ncolumn;i++)
{
if(i % ncolumn == 0)
printf("\n");
printf("%-8s",value[i]);
}
printf("\n");
sqlite3_free_table(value);
sqlite3_close(db);
return 0;
}