SQLite C++ 封装 easySQLite

BSD
C/C++
跨平台
2015-01-19
汉克斯

一个简单的 SQLite C++ 封装.

优势:

  • 优雅的面向对象解决方案

  • 显式命名和调用

  • 使用异常以及方法返回值

  • 容易理解

  • 灵活而且可扩展

  • 经过强测试

//define table structure
Field definition_tbPerson[] = 
{
        Field(FIELD_KEY),
        Field("fname", type_text, flag_not_null),
        Field("lname", type_text, flag_not_null),
        Field("birthdate", type_time),
        Field(DEFINITION_END),
};

//define database object
sql::Database db;

try
{
        //open database file
        db.open("test.db");

        //define table object
        Table tbPerson(db.getHandle(), "person", definition_tbPerson);

        //remove table from database if exists
        if (tbPerson.exists())
                tbPerson.remove();

        //create new table
        tbPerson.create();

        //define new record
        Record record(tbPerson.fields());

        //set record data
        record.setString("fname", "Jan");
        record.setString("lname", "Kowalski");
        record.setTime("birthdate", time::now());

        //add 10 records
        for (int index = 0; index < 10; index++)
                tbPerson.addRecord(&record);

        //select record to update
        if (Record* record = tbPerson.getRecordByKeyId(7))
        {
                record->setString("fname", "Frank");
                record->setString("lname", "Sinatra");
                record->setNull("birthdate");

                tbPerson.updateRecord(record);
        }

        //load all records
        tbPerson.open();

        //list loaded records
        for (int index = 0; index < tbPerson.recordCount(); index++)
                if (Record* record = tbPerson.getRecord(index))
                        sql::log(record->toString());

        sql::log("");
        sql::log("ALL OK");

} catch (Exception e) {
        printf("ERROR: %s\r\n", e.msg().c_str());
}
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

easySQLite使用帮助

easySQLite是一个sqlite的C++封转库,非常简洁。适合于小型项目,将它的帮助文档翻译了一下,推荐之。 项目地址:http://code.google.com/p/easysqlite/ easySQLite--a C++ SQLite wrapper 这...

2012/07/17 23:34
2.3K
1
Worktile 移动团队如何使用 C++ 完成 Worktile Pro 跨平台应用开发<2>

设计 “网络请求 - 解析数据 - 写入缓存 - 读取缓存” 在上篇的文章中我们说明了我们在是在 MVC 层面的 M 层共享了代码,不过对于只是“有可能”需要 OpenSDK 的团队来说,更重要的还是保证 ...

2016/05/09 16:17
15
2
SOCI及litesql对比

要用到一个C++封装的数据库访问库。要求以下几点: 1、能在sqlite、mysql、postgresql等等平滑迁移,主要是开发时一般测试用sqlite,正式发布时迁移到mysql或postgresql上面去。 2、逻辑不用太...

2012/09/19 13:32
3.7K
1
Worktile 移动团队如何使用 C++ 完成跨平台应用开发

动机 “好的代码值得共享” “快速完成第一版的原型,快速迭代”,如同许多初创 Sass 公司一样,我们也同样信奉这个时代快速迭代的开发方式,按照设计,我们第一个上线的版本是我们的 Web 版...

2016/04/12 15:17
32
1
sqlite3修改源码默认启用外键

介绍sqlite3如何修改源码默认启用外键

2016/02/18 18:07
11
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部