sqlite3 C语言编程

sqlite数据库操作例程:

[plain] view plain copy
  1. #include<stdio.h>  
  2. #include<sqlite3.h>  
  3. #include<string.h>  
  4.   
  5. int main()  
  6. {  
  7.     sqlite3 *db;  
  8.     char *zErrMsg = 0;  
  9.     char sql[128];      //存放sqlite执行命令  
  10.     char buff[1024];    //存放读取到的数据结果  
  11.     int rc;  
  12.     int len = 0;  
  13.     memset(buff,0,sizeof(buff));  
  14.     rc = sqlite3_open("test.db",&db);   //打开数据库  
  15.     if(rc != SQLITE_OK)  
  16.     {  
  17.         printf("zErrMsg = %s\n",zErrMsg);  
  18.         return -1;  
  19.     }  
  20.   
  21.     memset(sql,'\0',128);  
  22.     strcpy(sql,"create table student(id integer,name varchar(10),f float);");//创建表  
  23.     sqlite3_exec(db,sql,0,0,&zErrMsg);  //执行sqlite命令语句  
  24.   
  25.     memset(sql,'\0',128);  
  26.     strcpy(sql,"insert into student values(1,'xiaoming',1.1);");    //插入数据  
  27.     rc = sqlite3_exec(db,sql,0,0,&zErrMsg);  
  28.     if(rc != SQLITE_OK)  
  29.     {  
  30.         printf("zErrMsg = %s\n",zErrMsg);  
  31.         return -1;  
  32.     }  
  33.   
  34.     memset(sql,'\0',128);  
  35.     strcpy(sql,"insert into student values(2,'xiaohong',1.2);");  
  36.     rc = sqlite3_exec(db,sql,0,0,&zErrMsg);  
  37.     if(rc != SQLITE_OK)  
  38.     {  
  39.         printf("zErrMsg = %s\n",zErrMsg);  
  40.         return -1;  
  41.     }  
  42.   
  43.     int nrow = 0,ncolnum = 0;  
  44.     char **azResult;    //存放查询结果  
  45.   
  46.     memset(sql,'\0',128);  
  47.     strcpy(sql,"select * from student;");  
  48.     rc = sqlite3_get_table(db,sql,&azResult,&nrow,&ncolnum,&zErrMsg); //查询数据  
  49.     if(rc != SQLITE_OK)  
  50.     {  
  51.         printf("zErrMsg = %s\n",zErrMsg);  
  52.         return -1;  
  53.     }  
  54.   
  55.     int i = 0;  
  56.     printf("row:%d colnum=%d\n",nrow,ncolnum);  
  57.     for(i = ncolnum;i < (nrow+1)*ncolnum;i++)  
  58.     {  
  59.         printf("azResult[%d] = %s\n",i,azResult[i]);    //打印  
  60.         memcpy(buff+len,azResult[i],strlen(azResult[i])); //整条数据保存到另一个buff  
  61.         len+=strlen(azResult[i]);  
  62.     }  
  63.     for(i = 0;i < len;i++)  
  64.     {  
  65.         printf("%c ",buff[i]);  
  66.     }  
  67.     printf("\n");  
  68.   
  69.     memset(sql,'\0',128);  
  70.     strcpy(sql,"delete from student;"); //删除  
  71.     sqlite3_exec(db,sql,0,0,&zErrMsg);  
  72.   
  73.     sqlite3_free(zErrMsg);  
  74.     sqlite3_free_table(azResult);   //释放空间  
  75.     sqlite3_close(db);      //关闭数据库  
  76.     return 0;      
  77. }  

编译:gcc  test.c  -o  test  -lsqlite3

运行结果:



另一套查询接口:

[objc] view plain copy
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. #include<string.h>  
  4. #include<sqlite3.h>  
  5.   
  6. int main()  
  7. {  
  8.     sqlite3 *db;  
  9.     charchar *zErrMsg = 0;  
  10.     char sql[128];  
  11.     int rc;  
  12.     int len = 0;  
  13.     rc = sqlite3_open("test1.db",&db);  
  14.     if(rc != SQLITE_OK)  
  15.     {  
  16.         printf("zErrMsg = %s\n",zErrMsg);  
  17.         return -1;  
  18.     }  
  19.     sprintf(sql,"create table student(id integer,name varchar(10),f float,Occur DATETIME DEFAULT(datetime('now','localtime')));");  
  20.     sqlite3_exec(db,sql,0,0,&zErrMsg);  
  21.     sprintf(sql,"insert into student(id,name,f) values(%d,'%s',%f);",1,"小明",3.33);  
  22.     if(sqlite3_exec(db,sql,0,0,&zErrMsg)!=SQLITE_OK)  
  23.     {  
  24.         printf("zErrMsg = %s\n",zErrMsg);     
  25.         return 0x0b;  
  26.     }  
  27.       
  28.     sqlite3_stmt *stmt;  
  29.     int ncols;  
  30.     sprintf(sql,"select * from student");  
  31.     rc = sqlite3_prepare(db,sql,strlen(sql),&stmt,NULL);  
  32.     if(rc !=SQLITE_OK)  
  33.     {  
  34.         fprintf(stderr,"sql error:%s\n",sqlite3_errmsg(db));  
  35.     }  
  36.     while(sqlite3_step(stmt) == SQLITE_ROW)  
  37.     {  
  38.         fprintf(stdout,"%d ,%s ,%f,%s\n",  
  39.             sqlite3_column_int(stmt,0),  
  40.             sqlite3_column_text(stmt,1),  
  41.             sqlite3_column_double(stmt,2),            
  42.             sqlite3_column_text(stmt,3)  
  43.         );  
  44.     }  
  45.     sqlite3_finalize(stmt);  
  46.     sqlite3_close(db);  
  47. }  
阅读更多
个人分类: [Database] SQLite
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭