SQLite C++ 封装:easySQLite

jopen 10年前

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

项目主页:http://www.open-open.com/lib/view/home/1421724363843