[瞎掰]Sqlite数据库

为了方便项目的跨平台,在选用数据库时选择了轻量级的跨平台数据库--sqlite

在使用过程中,将常用接口封装了一下,使代码相对简洁,使用起来也相对方便。

目前封装了两个接口:

一:封装了sqlite3_exec接口

int HomeDatabase::callMySql(sqlite3 *sqlFd, const char *sql)
{
    /** 检查输入参数是否为有效参数 */
    ISNULL(sqlFd);
    ISNULL(sql);

    /** 操作前先清空错误信息 */
    zErrMsg = NULL;
    /** 运行传入的SQL语句 */
    sqlite3_exec(sqlFd, sql, 0, 0, &zErrMsg );
    if(zErrMsg == NULL)
    {
        printf("Call SQL Ok!\n");
    }
    else
    {
        printf("Call SQL ERROR: %s\n", sql);
        printf("%s\n", zErrMsg);
        return -2;
    }
    return 0;
}


二:封装了sqlite3_get_table接口

int HomeDatabase::callMySql(sqlite3 *sqlFd, const char *sql)
{
    /** 检查输入参数是否为有效参数 */
    ISNULL(sqlFd);
    ISNULL(sql);

    /** 操作前先清空错误信息 */
    zErrMsg = NULL;
    /** 运行传入的SQL语句 */
    sqlite3_exec(sqlFd, sql, 0, 0, &zErrMsg );
    if(zErrMsg == NULL)
    {
        printf("Call SQL Ok!\n");
    }
    else
    {
        printf("Call SQL ERROR: %s\n", sql);
        printf("%s\n", zErrMsg);
        return -2;
    }
    return 0;
}

封装接口主要是为了在大量地方调用时,免去到处判断类型及错误,使代码更简洁


在检查参数时,引入了宏函数ISNULL()

/** 宏函数,用来判断是否为NULL */
#define ISNULL(x) \
        do{\
            if((x) == NULL)\
            {\
                printf("Invalid parameter: NULL\n");\
                return -1;\
            }\
        }while(0)
宏函数一般使用do{}while包含起来

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值