Initializing the database layer
SQLite:
DatabaseLayer* pDatabase = new SqliteDatabaseLayer(_("mydb.db")); Firebird:
DatabaseLayer* pDatabase = new FirebirdDatabaseLayer(_("mydb.db"));
Inserting data
pDatabase->RunQuery(_("INSERT INTO table1 (column1, column2) VALUES ('One', 'Two')"));
Inserting data with a prepared statement
PreparedStatement* pStatement = pDatabase->PrepareStatement(_("INSERT INTO table1 (column1, column2) VALUES (?, ?)"));
if (pStatement)
{
pStatement->SetParamString(1, _("One"));
pStatement->SetParamString(2, _("Two"));
pStatement->RunQuery():
pDatabase->CloseStatement(pStatement);
}
Retrieving data
DatabaseResultSet* pResults = pDatabaseLayer->RunQueryWithResults(_("SELECT * FROM table1"));
if (pResults)
{
while (pResults->Next())
{
wxString strOne = pResults->GetResultString(_("column1"));
wxString strTwo = pResults->GetResultString(_("column2"));
}
pDatabase->CloseResultSet(pResults);
}
Retrieving data with a prepared statement
PreparedStatement* pStatement = pDatabase->PrepareStatement(_("SELECT * FROM table1 WHERE column1 - ?)"));
if (pStatement)
{
pStatement->SetParamString(1, _("One"));
DatabaseResultSet* pResults = pStatement->RunQueryWithResults():
if (pResults)
{
while (pResults->Next())
{
wxString strOne = pResults->GetResultString(_("column1"));
wxString strTwo = pResults->GetResultString(_("column2"));
}
pDatabase->CloseResultSet(pResults);
}
pDatabase->CloseStatement(pStatement);
}
Transactions - (If the database backend doesn't support transactions, then these won't do anything)
Start the transaction
pDatabase->BeginTransaction(); Commit the transaction
pDatabase->Commit(); Rollback the transaction
pDatabase->RollBack();
Perl DBD style Prepared Statement usage:
PreparedStatement* pStatement = pDatabase->prepare('INSERT INTO table1 (column1) VALUES (?)');
for (unsigned int i=0; i<array.size(); i++)
{
pStatement->SetParamString(1, array[i]);
pStatement->RunQuery();
}
pDatabase->CloseStatement(pStatement);
Shutting down a database connection
pDatabase->Close();
Exception Handling:
DatabaseLayer methods can throw exceptions of type DatabaseLayerException
try
{
...
}
catch (DatabaseLayerException& e)
{
wxLogError(wxString::Format(_("Error (%d): %s"), e.GetErrorCode(), e.GetErrorMessage().c_str()));
}
1.4.1