当前位置: > 数据库 > SQLite >

SQLite C++ 封装:easySQLite

时间:2016-05-29 13:28来源:linux.it.net.cn 作者:IT

一个简单的 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());
}



(责任编辑:IT)
------分隔线----------------------------