温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++的SmartDb怎使用

发布时间:2021-11-29 15:30:19 来源:亿速云 阅读:180 作者:iii 栏目:互联网科技

本篇内容主要讲解“C++的SmartDb怎使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的SmartDb怎使用”吧!

Sqlite是一个非常轻量级的开源数据库,在嵌入式系统中使用的比较多,存储管理数据非常方便,Sqlite库提供的基于C语言的API,用起来也挺简单,但是有一点不太好的就是API使用起来有些繁琐,另外就是不同的场合,代码复用率很低,又要重新写代码,增加了工作量,代码要尽量复用,才有价值。SmartDB对sqlite做了一层封装(基于C++11的模板元编程),屏蔽了诸多细节,使得我们使用起来很方便。在注重易用性的基础上还兼顾了性能和灵活性。

使用这个SmartDb去操作数据库就简单多了:

来看下示例代码:


void TestPerformance()
{
    SmartDB db;
    db.Open("test.db");   //打开数据库
    const string sqlcreat = "CREATE TABLE if not exists TestInfoTable(ID INTEGER NOT NULL, KPIID INTEGER, CODE INTEGER, V1 INTEGER, V2 INTEGER, V3 REAL, V4 TEXT);";
    if (!db.Excecute(sqlcreat))  //执行sql语句
        return;

    const string sqlinsert = "INSERT INTO TestInfoTable(ID, KPIID, CODE, V1, V2, V3, V4) VALUES(?, ?, ?, ?, ?, ?, ?);";
    bool ret = db.Prepare(sqlinsert);
    db.Begin();
    for (size_t i = 0; i < 10; i++) //00000
    {
        ret = db.ExcecuteArgs(i, i, i, i, i, i + 1.25, "it is a test");
        if (!ret)
            break;
    }

    if (ret)
        db.Commit(); //提交事务
    else
        db.RollBack(); //回滚

    auto p = db.Query("select * from TestInfoTable");

      rapidjson::StringBuffer buffer;
      rapidjson::PrettyWriter<rapidjson::StringBuffer> pretty_writer(buffer);  //PrettyWriter是格式化的json,如果是Writer则是换行空格压缩后的json
      p->Accept(pretty_writer);
      //打印到屏幕
     cout<<"the json output:"<<endl;
     cout<<buffer.GetString()<<endl;

    //遍历查询结果
    rapidjson::Value& infoArray  = *p;
    for ( int i = 0; i < p->Size(); ++i )
    {
        const rapidjson::Value& object = infoArray[i];
        printf("%d. Id: %d  KpiId: %d, v3: %f, v4: %s\n",i,
            object["ID"].GetInt(), object["KPIID"].GetInt(),object["V3"].GetDouble(),object["V4"].GetString());
    }

}

C++的SmartDb怎使用

查询的数据库时,结果是以Json格式返回的,这里返回的是一个json数组,这个用起来很方便。

到此,相信大家对“C++的SmartDb怎使用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI