当前位置: 首页 > 科技观察

如何用C语言操作sqlite3,有很多编程接口一文看懂

时间:2023-03-17 13:23:35 科技观察

sqlite3。对于初学者来说,我们只需要暂时掌握几个常用的功能,其他功能的使用自然就知道了。数据库本文假设数据库为my.db,有数据表student。nonamescore4一口linux89.0建表语句如下:CREATETABLEIFNOTEXISTSstudent(nointegerprimarykey,nametext,scorereal);Commonfunctionsqlite3_openintsqlite3_open(char*path,sqlite3**db);功能:打开sqlite数据库参数:path:数据库文件路径db:指向sqlite句柄的指针,后续对数据库的所有操作都必须依赖这个句柄返回值:成功返回0,返回错误码(非零值)如果失败sqlite3_closeintsqlite3_close(sqlite3*db);功能:关闭sqlite数据库返回值:成功返回0,失败返回错误码constchar*sqlite3_errmsg(sqlite3*db);功能:打印错误信息返回值:返回错误信息,不使用回调函数执行SQL语句:db:数据库句柄sql:SQL语句resultp:用于指向SQL执行结果的指针nrow:满足条件的记录数ncolumn:每条记录包含的字段数errmsg:错误信息指针的地址返回值:成功返回0,失败返回错误码例如我们要显示student表的所有数据信息,可以使用sqlite3_get_table()执行语句:select*fromstudent实现代码如下:voiddo_show_sample(sqlite3*db){char**result,*errmsg;intnrow,ncolumn,i,j,index;if(sqlite3_get_table(db,"select*fromstudent",&result,&nrow,&ncolumn,&errmsg)!=0){printf("error:%s\n",errmsg);sqlite3_free(errmsg);}index=ncolumn;for(i=0;i#include#include#includevoiddo_insert(sqlite3*db){intno;charname[16];floatscore;charsqlstr[128],*errmsg;printf("inputno:");scanf("%d",&no);printf("inputname:");scanf("%s",name);printf("inputscore:");scanf("%f",&score);sprintf(sqlstr,"insertintostudentvalues(%d,'%s',%.1f)",no,name,score);#if__DEBUGprintf("cmd:%s\n",sqlstr);#endifif(sqlite3_exec(db,sqlstr,NULL,NULL,&errmsg)!=0){printf("错误:%s\n",sqlite3_errmsg(db));}else{printf("insertisdone\n");}printf("\n");return;}voiddo_delete(sqlite3*db){char*e??rrmsg;charsqlstr[128],表达式[64];printf("inputexpression:");scanf("%s",expression);//name='ma'sprintf(sqlstr,"deletefromstudentwhere%s",expression);#if__DEBUGprintf("cmd:%s\n",sqlstr);#endifif(sqlite3_exec(db,sqlstr,NULL,NULL,&errmsg)!=0){printf("error:%s\n",sqlite3_errmsg(db));}else{printf("deletetisdone\n");}printf("\n");return;}intcallback(void*para,intf_num,char**f_val,char**f_name){inti;for(i=0;i