数据库操作 ——sqlite3_exec

#include <stdio.h>
#include <sqlite3.h>


int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name )
{
//para是你在 sqlite3_exec 里传入的 void * 参数 //通过para参数,你可以传入一些特殊的指针(比如类指针、结构指针),然后在这里面强制转换成对应的类型(这里面是void*类型,必须强制转换成你的类型才可用)。然后操作这些数据
// n_column是这一条记录有多少个字段 (即这条记录有多少列)
// char ** column_value 是个关键值,查出来的数据都保存在这里,它实际上是个1维数组(不要以为是2维数组),每一个元素都是一个 char * 值,是一个字段内容(用字符串来表示,以/0结尾)
//char ** column_name 跟 column_value是对应的,表示这个字段的字段名称
//这里,我不使用 para 参数。忽略它的存在.  
int i;
for (i = 0; i < n_column; i++)
{
printf ("%8s : %-8s ", column_name[i], column_value[i]);
}

printf ("\n");
return 0;
}


int main()
{
sqlite3 * db = NULL;
    
int result = sqlite3_open("student.db", &db);
if (result != SQLITE_OK)
{
   printf ("1open student.db error!\n");
return -1;
}


char *errmsg;
result = sqlite3_exec(db, "create table test(ID INTEGER, name TEXT, sex TEXT, age INTEGER, primary key(ID))", NULL, NULL, &errmsg);
if (result != SQLITE_OK && result != 1)
{
   printf ("create test table error : %d(%s)!\n", result, errmsg);
return -1;
}

/* int id;
char name[20];
char sex[20];
int age;
printf ("please insert a record\n");
printf ("please input ID:");
scanf ("%d", &id);
printf ("please input name:");
scanf ("%s", name);
printf ("please input sex:");
scanf ("%s", sex);
printf ("please input age:");
scanf ("%d", &age);
char buff[200]; */

/* result = sqlite3_exec(db, "update test set age=90 where name='Zhang'", NULL, NULL, &errmsg);
if (result != SQLITE_OK)
{
   printf ("insert test table error : %d(%s)!\n", result, errmsg);
//return -1;
} */
sprintf (buff, "insert into test values(%d,'%s', '%s', %d)", id, name, sex, age);
result = sqlite3_exec(db, buff, NULL, NULL, &errmsg);
if (result != SQLITE_OK)
{
   printf ("insert test table error : %d(%s)!\n", result, errmsg);
return -1;


result = sqlite3_exec(db, "select ID,name from test where sex='F'", LoadMyInfo, NULL, &errmsg);
if (result != SQLITE_OK)
{
   printf ("insert select table error : %d(%s)!\n", result, errmsg);
return -1;


sqlite3_close(db);
return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值