数据库的操作

来源:互联网 发布:免费动态域名解析软件 编辑:程序博客网 时间:2024/05/23 19:15
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <sqlite3.h>  
  4.   
  5. int create_table(sqlite3*db)//创建表,未空的打开  
  6. {  
  7.     char *errmsg = NULL;  
  8.     char *sql;  
  9.   
  10.     sql = "create table if not exists mytable (id integer primary key,name text);";  
  11.   
  12.     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  13.     {  
  14.         printf("create table error!%s\n",errmsg);  
  15.         exit(-1);  
  16.     }  
  17.   
  18.     return 0;  
  19. }  
  20. int insert_records(sqlite3*db)//插入记录  
  21. {  
  22.     char *errmsg = NULL;  
  23.     char sql[100];  
  24.     int id;  
  25.     char name[10];  
  26.     int num;  
  27.     int i;  
  28.     printf("enter number of records:");  
  29.     scanf("%d",&num);  
  30.   
  31.     for(i=0;i<num;i++)  
  32.     {  
  33.         printf("enter a id:");  
  34.         scanf("%d",&id);  
  35.         printf("enter a name:");  
  36.         scanf("%s",name);  
  37.           
  38.         sprintf(sql,"insert into mytable (id,name) values (%d,'%s');",id,name);  
  39.   
  40.         if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  41.         {  
  42.             printf("insert error!%s\n",errmsg);  
  43.             exit(-1);  
  44.         }  
  45.     }  
  46.   
  47.     return 0;  
  48.   
  49. }  
  50. int displaycb(void*para,int col_count,char**col_value,char**col_name)//显示表记录的回调函数  
  51. {  
  52.     int i;  
  53.     printf("total num %d\n",col_count);  
  54.   
  55.     for(i = 0; i < col_count; i++)  
  56.     {  
  57.         printf("col_name:%s--->col_value:%s\n",col_name[i],col_value[i]);  
  58.     }  
  59.   
  60.     printf("***********************\n");  
  61.   
  62.     return 0;  
  63. }  
  64. int inquire_usecb(sqlite3 *db)//显示表记录  
  65. {  
  66.     char *errmsg = NULL;  
  67.     char *sql;  
  68.   
  69.     sql = "select * from mytable;";  
  70.   
  71.     if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))  
  72.     {  
  73.         printf("select error!%s\n",errmsg);  
  74.         exit(-1);  
  75.     }  
  76.     return 0;  
  77.   
  78.   
  79. }  
  80.   
  81. int delate_record(sqlite3 * db)//删除一行表记录  
  82. {  
  83.     char *errmsg = NULL;  
  84.     char sql[100];  
  85.     int id;  
  86.     printf("enter the dalate id:");  
  87.     scanf("%d",&id);  
  88.   
  89.     sprintf(sql,"delete from mytable where id = %d;",id);  
  90.   
  91.     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  92.     {  
  93.         printf("select error!%s\n",errmsg);  
  94.         exit(-1);  
  95.     }  
  96.   
  97.     return 0;  
  98.   
  99. }  
  100. int inquire_usegt(sqlite3*db)//显示表记录,用sqlite3_get_table函数  
  101. {  
  102.     int row;  
  103.     int column;  
  104.     char **aresult;  
  105.     char *errmsg = NULL;  
  106.     char *sql;  
  107.     int i;  
  108.     sql = "select * from mytable;";  
  109.   
  110.     if(SQLITE_OK != sqlite3_get_table(db,sql,&aresult,&row,&column,&errmsg))  
  111.     {  
  112.         printf("select error!%s\n",errmsg);  
  113.         exit(-1);  
  114.     }  
  115.   
  116.     for(i = 0; i < (row + 1) * column ; i++)  
  117.     {  
  118.         printf("%10s",aresult[i]);  
  119.         if((i + 1) % column == 0)  
  120.         {  
  121.             printf("\n");  
  122.         }  
  123.     }  
  124.   
  125.     sqlite3_free_table(aresult);  
  126.   
  127.     return 0;  
  128. }  
  129.   
  130. int main()  
  131. {  
  132.     sqlite3 * db = NULL;  
  133.     int ret;  
  134.   
  135.     ret = sqlite3_open("mydatabase.db",&db);  
  136.   
  137.     if(ret != SQLITE_OK)  
  138.     {  
  139.         perror("open mydatabase.db error!\n");  
  140.         exit(-1);  
  141.     }  
  142.     else  
  143.     {  
  144.         printf("open mydatabase.db successfully\n");  
  145.     }  
  146.   
  147.     create_table(db);  
  148.     insert_records(db);  
  149.     inquire_usecb(db);  
  150.     delate_record(db);  
  151.     inquire_usegt(db);  
  152.   
  153.     sqlite3_close(db);  
  154.   
  155.     return 0;  
  156. }  
0 0