sqlite3的使用

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

#include <stdio.h>

#include <sqlite3.h>

#include <stdlib.h>

 

#define _DEBUG_

 

int main(void)

{

   sqlite3 *db=NULL;//声明sqlite关键结构指针

   char *zErrMsg = 0;

   int rc;

   rc = sqlite3_open("/home/xue/db/Person",&db);   //终端到该目录,shell建表

   if(rc!=SQLITE_OK){

       fprintf(stderr,"Can't open database:%s\n",sqlite3_errmsg(db));

       sqlite3_close(db);

       exit(1);

   }

   else printf(" successfully!\nCongratulation! Have fun!\n");

   int row=1,column=1;

   char **result;

   char *sql="select * from Per";

   sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg);

   int i=0;

   printf("row:%d column:%d\n",row,column);

   printf("\nThe result of querying is:\n");

   

   //输出查询的数据

   for(i=0;i<(row+1)*column;i++)

      printf("result[%d]=%s\n",i,result[i]);

 

   sqlite3_free_table(result);//释放result的内存空间

 

   #ifdef _DEBUG_ //如果前面已经定义了_DEBUG_ ,则输出所创建的表存在的信息

      printf("zErrMsg=%s\n",zErrMsg);//保留错误信息,如为空(null),表明在执行过程中没有错误信息

   #endif

 

 

   sqlite3_close(db);              //关闭数据库

   return 0;

}

//以上为已调试通过的代码;

#include <stdio.h>

#include <sqlite3.h>

#include <stdlib.h>

 

#define _DEBUG_

 

int main(void)

{

   sqlite3 *db=NULL;//声明sqlite关键结构指针

   char *zErrMsg = 0;

   int rc;

 

   //打开或创建一个数据库文件

   rc = sqlite3_open("Person",&db);   //打开指定的数据库文件,如果不存在,将创建一个同名的数据库文件,需要传入db这个指针的指针,因为sqlite3_open函数要为这,个指针分配内存,好要让db指针指向这个内存区

   if(rc!=SQLITE_OK){//或者直接是rc

       fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));

       sqlite3_close(db);

       exit(1);//打开失败,退出

   }

   else printf("You have opened a sqlite3 database named query.dbsuccessfully!\nCongratulation! Have fun!\n");

   

   /*//创建一个表

   char *sql = "CREATE TABLE SensorData(ID INTEGER PRIMARYKEY,SensorID INTEGER,SiteNum INTEGER,name VARCHAR(12),SensorparamterREAL);";

   sqlite3_exec(db,sql,0,0,&zErrMsg);

   #ifdef _DEBUG_ //如果前面已经定义了_DEBUG_ ,则输出所创建的表存在的信息

      printf("%s\n",zErrMsg);

   #endif

 

   //插入数据

   sql="INSERT INTO\"SensorData\"VALUES(NULL,1,1,'200708081008',18.9);";//向要表中输入内容

   sqlite3_exec(db,sql,0,0,&zErrMsg);

   sql="INSERTINTO\"SensorData\"VALUES(NULL,1,1,'200708081010',16.4);";

   sqlite3_exec(db,sql,0,0,&zErrMsg);*/

 

   int row=0,column=0;//用于记录下面结果集中的行数和列数

    char **result;//二维数组用于存放结果

 

   //查询数据

   char *sql="select * from Per";//查询语句,其在C语言中对应的函数接口是sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg)

   sqlite3_get_table(db,sql,&result,&row,&column,&zErrMsg);//result:以数组的形式存放所要查询的数据,首先是表名,然后才是数据

 

   int i=0;

   printf("row:%d column:%d\n",row,column);

   printf("\nThe result of querying is:\n");

   

   //输出查询的数据

   for(i=0;i<(row+1)*column;i++)

      printf("result[%d]=%s\n",i,result[i]);

 

   sqlite3_free_table(result);//释放result的内存空间

 

   #ifdef _DEBUG_ //如果前面已经定义了_DEBUG_ ,则输出所创建的表存在的信息

      printf("zErrMsg=%s\n",zErrMsg);//保留错误信息,如为空(null),表明在执行过程中没有错误信息

   #endif

 

 

   sqlite3_close(db);              //关闭数据库

   return 0;

}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值