SQLite常用函数
Sqlite常用函数: 1、打开数据库: const char *filename,/* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ );
2、关闭数据库: int sqlite3_close(sqlite3*); //参数就是刚才的结构体,也就是数据库句柄
4、exec的回调 typedef int (*sqlite3_callback)(void*,int,char**,char**); 说明:你的回调函数必须定义为上面这个函数的类型。 int LoadMyInfo( void * para,int n_column,char ** column_value,char ** column_name ) //通过para参数,你可以传入一些特殊的指针(比如类指针、结构指针),然后在这里面强制转换成对应的类型(这里面是void*类型,必须强制转换成你的类型才可用)。然后操作这些数据 //n_column是这一条记录有多少个字段(即这条记录有多少列) // char ** column_value是个关键值,查出来的数据都保存在这里,它实际上是个1维数组(不要以为是2维数组),每一个元素都是一个char *值,是一个字段内容(用字符串来表示,以 结尾) //char ** column_name跟column_value是对应的,表示这个字段的字段名称
说明:第三个参数是查询结果,它是一维数组,内存布局为:第一行是字段名称,后面是紧接着是每个字段的值。 int main( int,char ** ) char **dbResult; int nRow,nColumn; int i,j; int index; result = sqlite3_open( “c:Dcg_database.db”,&db ); //数据库操作代码 //假设前面已经创建了MyTable_1表 //开始查询,传入的dbResult已经是char **,这里又加了一个&取地址符,传递进去的就成了char *** result = sqlite3_get_table( db,“select * from MyTable_1”,&dbResult,&nRow,&nColumn,&errmsg ); if( SQLITE_OK == result ) for( i = 0; i < nRow ; i++ ) } //到这里,不论数据库查询是否成功,都释放char**查询结果,使用sqlite提供的功能来释放 return 0;
实例:(SQLite数据库使用回调函数的简单C语言实例) 1.#include <stdio.h> 2. 3.#include <sqlite3.h> 4. 5. 6. 7.static int callback(void *NotUsed,int argc,char **argv,char **azColName) 8. 9.{ 10. 11. int i; 12. 13. for(i=0; i<argc; i++) 14. 15. { 16. 17. printf("%s = %sn",azColName[i],argv[i] ? argv[i] : "NULL"); 18. 19. } 20. 21. printf("n"); 22. 23. return 0; 24. 25.} 26. 27. 28. 29.int main(int argc,char **argv) 30. 31.{ 32. 33. sqlite3 *db; 34. 35. char *zErrMsg = 0; 36. 37. int rc; 38. 39. 40. 41. if( argc!=3 ) 42. 43. { 44. 45. fprintf(stderr,"Usage: %s DATABASE SQL-STATEMENTn",argv[0]); 46. 47. return 1; 48. 49. } 50. 51. rc = sqlite3_open(argv[1],&db); 52. 53. if( rc ) 54. 55. { 56. 57. fprintf(stderr,"Can't open database: %sn",sqlite3_errmsg(db)); 58. 59. sqlite3_close(db); 60. 61. return 1; 62. 63. } 64. 65. rc = sqlite3_exec(db,argv[2],callback,&zErrMsg); 66. 67. if( rc!=SQLITE_OK ) 68. 69. { 70. 71. fprintf(stderr,"SQL error: %sn",zErrMsg); 72. 73. sqlite3_close(db); 74. 75. return 1; 76. 77. } 78. 79. sqlite3_close(db); 80. 81. return 0; 82. 83.} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |