sqlite3入门

转载地址:https://www.cnblogs.com/IamLoser/p/6648396.html    https://baike.baidu.com/item/SQLite/375020


sqllite简介:

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

常用语法:

    (1)创建数据库:sqlite3 xxx.db

    (2)创建表

    (3)删除表

    (4)INSERT INTO语法

    (5)SELECT语法

    (6)WHERE语法

    (7)UPDATE语法

    (8)DELETE语法

 


linux C中编译方式:gcc opendbsqlite.c -o db.out -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include


主要函数:

    (1)最重要的三个函数:

      int sqlite3_open(const char*, sqlite3**);

      int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**); 

      int sqlite3_close(sqlite3*);

      还有2个:

          const char *sqlite3_errmsg(sqlite3*);

          void sqlite3_free(void*);

      查看更多函数,下载sqlite源码包,只需要其中的sqlite3.c、sqlite.h即可。

 

    (2)sqlite3_open 返回一个整数错误代码,=0 表示成功码,> 0都是错误码,详情看Sqlite3手册说明

      函数用于打开/创建一个函数库

      const char* 指定文件名,sqlite3** 指定数据库句柄,用户通过数据库句柄操作数据库

      

 

    (2)sqlite3_exec返回0表示sql指令执行完毕,否则说明这次执行没有成功

      函数用于执行一条或多条SQL语句,SQL语句之间用“;”隔开

      sqlite3*指定已打开的数据库句柄,const char *sql   指定SQL指令,sqlite_callback  在回调函数中可以获得SQL执行的结果

      void*  指定传给回调函数的数据 , char**   指定命令执行失败的详细错误信息

    (3)回调函数

      

    (4) sqlite3_close   关闭数据库文件,参数是数据库句柄

    (5)sqlite3_errmsg  返回错误码所对应的文字说明,参数是数据库句柄

    (6)sqlite3_free  释放存放错误信息的内存空间,sqlite3_errmsg  返回的errmsg必须用此函数释放

    (7)简单测试代码

demo程序
#include <stdio.h>
#include <sqlite3.h>

int callback(void *pv,int argc,char **argv,char **col)
{
    int cnt_i = 0;
    for(cnt_i =0;cnt_i < argc;cnt_i++)
    {
        printf("%s\t%s\n",col[cnt_i],argv[cnt_i]);
    }
    printf("\n");
    return 0;
}

int main(void)
{
    sqlite3 *db;
    int result = 0;
    char *rerrmsg = NULL;
    char *sql = NULL;
    char *data = "callback";

    result = sqlite3_open("sample.db",&db);
    if(result > 0)
    {
        printf("open database err:%s\n",sqlite3_errmsg(db));
        return -1;
    }

    else
    {
        printf("open database successfully!\n");

        sql = "CREATE TABLE STUDENT("    \
              "NUM INT PRIMARY KEY NOT NULL,"    \
              "NAME TEXT NOT NULL,"        \
              "AGE INT NOT NULL,"        \
              "SORCE REAL);";

        result = sqlite3_exec(db,sql,callback,NULL,&rerrmsg);
        if(result != 0)
        {
            printf("creat table err:%s\n",rerrmsg);
            sqlite3_free(rerrmsg);
            return -2;
        }

        else
        {
            printf("create table successfully!\n");

            sql = "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)"        \
                  "VALUES(1,'Paul',13,99.1);"                    \
                  "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)"        \
                  "VALUES(2,'Kate',15,94.1);"                    \
                  "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)"        \
                  "VALUES(3,'Jim',12,95.1);"                    \
                  "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)"        \
                  "VALUES(4,'Tom',13,99.4);"                    \
                  "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)"        \
                  "VALUES(5,'Jack',13,89.1);";

            result = sqlite3_exec(db,sql,callback,NULL,&rerrmsg);
            if(result != 0)
            {
                printf("insert data err:%s\n",rerrmsg);
                sqlite3_free(rerrmsg);
                return -3;
            }

            else
            {
                printf("insert data successfully!\n");

                sql = "SELECT * FROM STUDENT";
                result = sqlite3_exec(db,sql,callback,(void *)data,&rerrmsg);
                if(result != 0)
                {
                    printf("select data err:%s\n",rerrmsg);
                    sqlite3_free(rerrmsg);
                    return -4;
                }

                else
                {
                    printf("select data successfully!\n");
                }
            }
        }
    }

    sqlite3_close(db);

    return 0;
}

完!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值