当前位置:   article > 正文

Sqlite3数据库 C语言用法_sqlite3 c语言获取数据库总条目

sqlite3 c语言获取数据库总条目

        sqlite3数据库跟sqlite的使用方式相同,因此我使用的时候照着sqlite的教学来的。

1.sqlite3的数据库初始化

        由于设备重新上电以后,需要重新执行代码,如果我们的代码中使用insert方式,那么开机两次,就会insert两轮数据。因此我们在设备上先创建号一张数据表。代码如下,创建一张具有六十个数据的表。在设备中执行完以后,将表格提取出来,我们的程序中只需要对其update更新表格的数据就行了。

        sqlite3_open:创建一个数据库,名称为raindat.db

        sqlite3_exec:对数据库中执行存储在sql数组的命令。如果不清楚的话,建议去看看sqlite3的语法规则。

        sqlite3_get_table:获取表格的数据,最终返回到result的二级指针中。

        sqlite3_free_table:释放table表格资源

        sqlite3_close:关闭数据库资源

  1. #include <stdio.h>
  2. #include <sqlite3.h>
  3. #include <stdlib.h>
  4. #define _DEBUG_ 0
  5. int main( void )
  6. {
  7. sqlite3 *db=NULL;//声明sqlite关键结构指针
  8. char *zErrMsg = 0;
  9. int rc;
  10. //打开或创建一个数据库文件
  11. rc = sqlite3_open("raindat.db", &db); //打开指定的数据库文件,如果不存在,将创建一个同名的数据库文件,需要传入db这个指针的指针,因为sqlite3_open函数要为这,个指针分配内存,好要让db指针指向这个内存区
  12. if(rc!=SQLITE_OK){//或者直接是rc
  13. fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));
  14. sqlite3_close(db);
  15. exit(1);//打开失败,退出
  16. }
  17. else
  18. printf("You have opened a sqlite3 database named query.db successfully!\nCongratulation! Have fun!\n");
  19. //创建一个表
  20. char sql[128];
  21. int i = 0;
  22. if(sqlite3_exec(db , "create table if not exists raindata(id integer , mincnt integer);" ,NULL , NULL, &zErrMsg) != SQLITE_OK){
  23. printf("%s\n" , zErrMsg);
  24. }
  25. //插入数据
  26. for(i = 0 ; i < 60 ; i ++){
  27. sprintf(sql ,"insert into raindata values(%d,255);" , i);
  28. sqlite3_exec(db,sql,0,0,&zErrMsg);
  29. }
  30. int row=0,column=0;//用于记录下面结果集中的行数和列数
  31. char **result;//二维数组用于存放结果
  32. //查询数据
  33. sprintf(sql ,"select * from raindata");
  34. sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg);
  35. printf("row:%d column:%d\n",row,column);
  36. printf("\nThe result of querying is:\n");
  37. //输出查询的数据
  38. for(i=0;i<(row+1)*column;i++){
  39. if(i % 2 == 0)
  40. printf("%s:\t",result[i]);
  41. else if(i % 2 == 1)
  42. printf("%s\n",result[i]);
  43. }
  44. sqlite3_free_table(result);//释放result的内存空间
  45. sqlite3_close(db); //关闭数据库
  46. return 0;
  47. }

2.在程序中对表格进行更新

        对表格数据进行更新函数,使用update命令进行更新。话不多说,show you the code

  1. static void DB_Write_a_data(int min , int raincnt)
  2. {
  3. int i;
  4. sqlite3 *db;
  5. char *zErrMsg = 0;
  6. char sql[64] = {0};
  7. /* char *sql = "create table raindata(id integer,mincnt integer); */
  8. if(sqlite3_open(DB_RAINFALL , &db) != SQLITE_OK){
  9. printf("%s\n" , sqlite3_errmsg(db));
  10. return ;
  11. }
  12. for(i = 0; i < 60 ; i++){
  13. sprintf(sql, "update %s set mincnt = %d where id = %d" ,DB_TBL_RAINDATA ,raincnt ,min);
  14. if(sqlite3_exec(db , sql , NULL , NULL , &zErrMsg) != SQLITE_OK){
  15. perror("Error: sqlite3_exec");
  16. }
  17. }
  18. sqlite3_close(db);
  19. return ;
  20. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号