您的位置:首页 > 数据库

SQLITE 源码在自己工程中的使用

2017-01-16 22:22 162 查看


为什么会有这种需求,因为sqlite的源码是纯C语言,对于不想额外安装exe的场合,可以把源码嵌入到任何你需要的工程中来使用。

首先,去官网下载到sqlite的源码,http://www.sqlite.org/download.html。下载sqlite-amalgamation-3160200.zip版本就可以,其中需要的是.h和.c两个文件。将这两个文件分别加到你工程的头文件和源文件内。

在需要使用的地方包含以下头文件#include “sqlite3.h”

一、新建(打开)一个数据库

函数:sqlite3_open();

返回值:函数执行结果

举例:

    sqlite3 *db;

    int nResult = sqlite3_open("test.db", &db);

    if(nResult == SQLITE_OK)

    {

        qDebug() << "open success";

    }

    else {

        qDebug() << "open fail";

    }

如果test.db数据库存在,则打开;如果不存在则新建一个名为test的数据库。

二、创建表

函数:sqlite3_exec();

返回值:函数执行结果

举例:

    char* errmsg;

    char* strSql;

    nResult = sqlite3_exec(db,"create table stflag_tab(id integer primary key autoincrement,name varchar(100))",NULL,NULL,&errmsg);

    if(nResult == SQLITE_OK)

   {

        qDebug() << "create success";

    }

    else {

        qDebug() << "create fail";

    }

其中 errmsg可以返回执行错误的具体内容。

   也可这样写:

   strSql = “create table stflag_tab(id integer primary key autoincrement,name varchar(100))”;

   nResult = sqlite3_exec(db, strSql, NULL, NULL, &errmsg);

三、增加表中数据

函数:sqlite3_exec();

返回值:函数执行结果

举例:

    strSql = "insert into stflag_tab values ('3', 'xx')";

    nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);

    nResult = sqlite3_exec(db,"insert into stflag_tab values ('4', 'yrx')", NULL,NULL,&errmsg);

    if(nResult == SQLITE_OK)

    {

        qDebug() << "insert OK";

    }

    else {

        qDebug() << "insert fail";

        qDebug() << errmsg;

    }

四、更改表中数据

函数:sqlite3_exec();

返回值:函数执行结果

举例:

    strSql = "update stflag_tab set name ='ruwei' where id ='4'";

    nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);

    if(nResult == SQLITE_OK)

    {

        qDebug() << "update OK";

    }

    else {

        qDebug() << "update fail";

        qDebug() << errmsg;

    }

五、查询数据

函数:sqlite3_get_table();sqlite3_free_table(),查询完了要释放

返回值:函数执行结果

举例:

    char** pResult;

    int nrow;

    int ncolumn;

    strSql = "select * from stflag_tab ";

    nResult = sqlite3_get_table(db, strSql, &pResult, &nrow, &ncolumn, &errmsg);

    int nindex =ncolumn;

    if(nResult == SQLITE_OK)

    {

        qDebug() << "select OK";

        for(int i=0; i<nrow; i++)

        {

            for(int j=0; j< ncolumn;j++)

            {

                qDebug() << pResult[nindex++];

            }

        }

    }

    else {

        qDebug() << "select fail";

        qDebug() << errmsg;

    }

    sqlite3_free_table(p);

注意:

六、删除数据

函数:sqlite3_exec();

返回值:函数执行结果

举例:

    strSql = "DELETE FROM stflag_tab";

    nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);

    if(nResult == SQLITE_OK)

    {

        qDebug() << "delete OK";

    }

    else {

        qDebug() << "delete fail";

        qDebug() << errmsg;

    }



执行完所有操作后,记得关闭数据库sqlite3_close(db)。



最后附上完整的Demo,是在Qt中编译的,不过看一眼就能明白。上述代码全部亲自验证通过。

http://download.csdn.net/detail/sinat_30440627/9739232
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqlite 源码 sqlite3