#include <stdio.h>
#include <sqlite3.h>
int main()
{
sqlite3 *db;
int ret = sqlite3_open("student.db",&db);
if (ret != SQLITE_OK)
{
printf ("数据库打开失败\n");
return -1;
}
char *errmsg;
const char *sql = "create table if not exists student(ID INTEGER,name TEXT,sex TEXT,age INTEGER,primary key(ID))";
ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg );
if (ret != SQLITE_OK)
{
printf ("exec 失败: %s\n", errmsg);
return -1;
}
int id = 1;
char name[20] = "Zhang";
char sex[10] = "M";
int age = 18;
char str[100];
sprintf (str, "insert into student values(%d, '%s', '%s', %d)", id, name, sex, age);
ret = sqlite3_exec(db, str, NULL, NULL, &errmsg );
if (ret != SQLITE_OK)
{
printf ("exec 失败: %s\n", errmsg);
return -1;
}
sqlite3_close(db);
return 0;
}
查询操作:
#include <stdio.h>
#include <sqlite3.h>
// 回调函数执行方式:没查询到一条记录调用一次回调函数
// 第一个参数:exec 用户传过来的参数
// 第二个参数:查询到的结果的 列数
// 第三个参数:查询的一条记录的值, 例如 char *value[] = {"1", "zhang", "M", "18"};
// 第三个参数:查询记录字段(标题)的值, 例如 char *name[] = {"ID", "name", "sex", "age"};
// 返回值:必须0,否则,之后的记录将不再返回
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;
}
int main()
{
sqlite3 *db;
int ret = sqlite3_open("student.db",&db);
if (ret != SQLITE_OK)
{
printf ("数据库打开失败\n");
return -1;
}
char *errmsg;
const char *sql = "select * from student";
ret = sqlite3_exec(db, sql, myfunc, NULL, &errmsg );
if (ret != SQLITE_OK)
{
printf ("exec 失败: %s\n", errmsg);
return -1;
}
sqlite3_close(db);
return 0;
}
查询操作(不使用回调):
#include <stdio.h>
#include <sqlite3.h>
int main()
{
sqlite3 *db;
int ret = sqlite3_open("student.db",&db);
if (ret != SQLITE_OK)
{
printf ("数据库打开失败\n");
return -1;
}
char *errmsg;
const char *sql = "select * from student";
char **value = NULL;
int row;
int column;
ret = sqlite3_get_table(db, sql, &value, &row, &column, &errmsg);
if (ret != SQLITE_OK)
{
printf ("查询失败: %s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
int i;
for (i = column; i < row*column; i++)
{
if (i % column == 0)
printf ("\n");
printf ("%-8s", value[i]);
}
printf ("\n");
sqlite3_free_table(value); // 释放查询结果
sqlite3_close(db);
return 0;
}