SQLite C++ 封装:easySQLite
                 jopen
                 11年前
            
                    一个简单的 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());  }