sqlite安装与封装后编译

========================安装sqlite=================
官网下载安装包*.tar.gz格式
./configure --prefix=/usr/server/sqlit 安装包目录
make
make install

测试安装成功 sqlite3 test.db

=======================编译====================
编译时 加入参数 -I /usr/server/sqlite/include
-L /usr/server/sqlite/lib
如果编译为静态 则 -static

-lsqlite3 加入它就ok

=======================源程序=================

网上找的

/*    Others:         需要sqlite3的动态库  gcc -o db db.c ./libsqlite3.so //还没弄懂
                                      或 gcc -o db db.c -lsqlite3 //还没弄懂
*************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlite3.h>               

int DbOpenDatabase(char *strDbName, sqlite3 **hDbCon)
{
    int iRet = sqlite3_open(strDbName,hDbCon); //打开数据库
    if(iRet != SQLITE_OK)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}

void DbCloseDatabase(sqlite3 *hDbCon)
{
    sqlite3_close(hDbCon);
}

int DbChangeDataRecord(sqlite3 *hDbCon,char *strSql)
{
    char *pErrMsg = 0;  //错误信息
    int iRet = sqlite3_exec(hDbCon, strSql, NULL, NULL, &pErrMsg);
    if(iRet != SQLITE_OK)
    {
        //printf("查询失败,错误码==>:%d,错误原因==>:%s\n", ret, errmsg );
        return -1;
    }
    else
    {
        return iRet;
    }
}

int DbExecuteQuerySql(sqlite3 *hDbCon,
                      char *strSql,
                      char ***strResult,
                      int *iRow,
                      int *iColumn)
{
    char *pErrMsg = NULL;         //错误日志
    int iReturn = 0;
    int iResult = sqlite3_get_table( hDbCon,strSql, strResult, iRow, iColumn, &pErrMsg );
    if( SQLITE_OK == iResult )
    {
        iReturn = 1;
    }
    else
    {
        iReturn = 0;
    }
    return iReturn;
}

void DbFreeResources(char **strResult)
{
    sqlite3_free_table( strResult );
}

int DbSqliteCallBack(sqlite3 * hDbCon,const char *strSql,int (*QueryResultBack)())
{
    char *pErrMsg;
    int iRetDb = 0;
    iRetDb = sqlite3_exec(hDbCon,strSql,QueryResultBack,NULL,&pErrMsg);
    if(iRetDb != SQLITE_OK)
    {
        return 0;
    }
    return 1;
}

//回调函数例子测试
/*static int QueryResultBack(void *para,int iColumn,char **cValue,char **cColumnValueName)
{
    int iCn;
    for(iCn = 0; iCn < iColumn; iCn++)
    {
        //printf( "%s = %s\n" , cColumnValueName[i], cValue[i] ? cValue[i] : "NULL" );
        printf( "%s = %s\n" , cColumnValueName[i], cValue[i]);
    }
    return 0;
}*/

int main(int argc, char *argv[])
{
    char *dbname="dtmsg.db";
    sqlite3 *db;
    int iReturn=DbOpenDatabase(dbname,&db);
    printf("-1->%d<---\n",iReturn);
    if(iReturn==1)
    {
        //增加、修改、删除
        char *sql="insert into t_msg (msg,msg_buff) values (‘test‘,‘测试信息11‘)";
        //char * sql="update t_msg set msg_buff=‘测试信息2222222‘ where msg=‘test‘";
        //char * sql="delete from t_msg where msg=‘test‘";
        printf("-2-->%s<--\n",sql);
        int iSqlRet=DbChangeDataRecord(db,sql);
        printf("-3-->%d<--\n",iSqlRet);

        //查询
        //char *sql="select * from t_msg";
        sql="select * from t_msg";
        char **dbResult;
        int nRow,nColumn,index;
        int i,j;
        int iQret=DbExecuteQuerySql(db,sql,&dbResult,&nRow,&nColumn);
        if(iQret==1)
        {
            index=nColumn;
            for( i = 0; i < nRow ; i++ )
            {
                printf( "第====================> %d 条记录\n", i+1 );
                for( j = 0 ; j < nColumn; j++ )
                {
                    printf( "字段名:%s ==>字段值:%s\n", dbResult[j],dbResult[index]?dbResult[index]:"" );
                    ++index;
                }
            }
        }
        //不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放
        //FreeResources(dbResult);
        sqlite3_free_table( dbResult );
    }
    DbCloseDatabase(db);
    return 1;
}

sqlite安装与封装后编译

时间: 2024-08-29 03:11:23

sqlite安装与封装后编译的相关文章

自己动手一步一步安装hadoop(含编译hadoop的native本地包)

最近项目需要用到hadoop,边学习边应用,第一步无疑是安装hadoop,我安装的是hadoop-2.4.1,下面是详细步骤,做备忘以后查看 一.下载依赖软件 1.java hadoop官网说明只支持java 6和7 ,下载最新的java7 http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz 2.maven 从maven官网下载http://maven.apache.org/download

解决安装VC6.0后出现MSDEV.EXE错误解决方法

问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一种方法 1.在下面的网站下载FileTool.exe http://support.microsoft.com/kb/241396/en-us      2.FileTool.exe是个自解压文件,执行它,解压到某个目录下 3.解压后的文件是一个VC工程,在VC6中编译它 4. 在dsw文件上右键“

封装后带超时的httpclient

nuget包里的.点我查看安装命令 参考自菜菜的这篇文章 public MainPage() { InitializeComponent(); method();//注意:如果2个method写在一个方法里面,调用的时候,2个方法走完才会加载数据,这样用户体验很不好 method1(); } private async void method() { var a = await AsyncCallbac1("http://www.baidu.com"); TbBlock.Text =

【Android】19.3 ContentProvider及安卓进一步封装后的相关类

分类:C#.Android.VS2015: 创建日期:2016-03-08 一.简介 ContentProvider:内容提供程序. Android的ContentProvider与.NET框架的EF(Entity Framework)非常类似.在EF中,每个类表示数据库中的一个表,类中的每个属性对应表的字段,类的每个实例表示数据库表的一行记录.同样,在Android中,每个ContentProvider类的实例表示数据表的一行记录,ContentProvider实例集合中的每一项表示数据表中的

安装XCode7.1后,QT5.5出现的各种问题解决方案

安装XCode7.1后,突然发现QT5.5编译不了程序了.直接在终端输入clang,竟然输出如下的信息. Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo. 其实这个是需要我们同意一个license.在终端输入下面的命令. sudo xcodebuild -license 会打开一个协议,按空格键浏览到最后,然后输入agree即可.这样clang就可以. 不过使用

【apache http server安装】CentOS上编译安装Aapche Http Server详细过程

下载apache httpd # wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.10.tar.gz 2. 解压 apache httpd # tar xzvf httpd-2.4.10.tar.gz 编译apache httpd [[email protected]]# ./configure checkingfor chosen layout... Apache checkingfor working mkdir -p... yes

虚拟机下安装EPEL源后YUM安装工具报ERROR -1错误的解决方法

使用rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-6.noarch.rpm(我是32位的系统) 安装EPEL源后使用YUM安装工具安装软件后出现如下错误: epel/primary_db                                                                  | 2.7 MB     00:00     http://ftp.cuhk.edu.h

linux软件包的安装之----源码编译安装

前提:必须装好前面说过的开发环境,rhel6上的3个开发包组 Rhel5/centos5上面安装: 1)Development Tools (2)Server Platform Development (3)Develogmentlibraries Rhel6/centos6上面安装: 1)  Development Tools (2)Server Platform Development (3)Desktop PlatformDevelopment **由于tarball中的c程序源码文件之间

Android预安装软件&adb命令&编译源码

1.预安装软件: 将apk文件拷贝到 android/platform/thirdapp/ 目录下,然后编译android源码再烧录就可以完成 当然,在该下删除apk也可以实现去掉预装软件,这应该就是很多精简rom包实现的原理 2.编译android源码 进入android源码根目录下 rm $OUT/system $OUT/data $OUT/obj/APPS -rf source build/envsetup.sh  make image 3.烧录 将编译得到的out/mt8658sdk/b