воскресенье, 27 ноября 2011 г.

Пример использования SQLite3

В примере используется функция wxLogMessage из библиотеки wxWidgets для вывода на экран, можно ее заменить printf, убрав wxT, суть не в этом, только надо помнить, что SQLite3 библиотека использует Unicode (UTF-8).


sqlite3 *db;
int rc;

rc = sqlite3_open("test.sqlite", &db);

if( rc )
{
wxLogMessage(wxT("Can't open database: %s"), sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}

sqlite3_stmt *pStmt;
char zSql[] = "SELECT * From tbl;";

do
{
/* Компилираем запрос SQL. Ожидаем успех.*/
sqlite3_prepare(db, zSql, -1, &pStmt, 0);

while( SQLITE_ROW==sqlite3_step(pStmt) )
{
/* Что-то делаем с записью */
wxString str = wxString((const char*)sqlite3_column_text(pStmt, 1), wxConvUTF8);

wxLogMessage(wxT("%d | %s"),sqlite3_column_int(pStmt,0),str.c_str());

}

/* Завершаем запрос. Если ошибка SQLITE_SCHEMA
** произошло, то вышестоящий вызов sqlite3_step()
** вернул SQLITE_ERROR. sqlite3_finalize() вернет
** SQLITE_SCHEMA. В этом случае повторяем цикл.
*/
rc = sqlite3_finalize(pStmt);
}
while( rc==SQLITE_SCHEMA );

wxString Sql;

Sql=wxT("Select * From tbl;");

do
{
/* Компилираем запрос SQL. Ожидаем успех. */
sqlite3_prepare(db, Sql.ToUTF8(), -1, &pStmt, 0);

while( SQLITE_ROW==sqlite3_step(pStmt) )
{
/* Что-то делаем с записью */
wxString str = wxString((const char*)sqlite3_column_text(pStmt, 1), wxConvUTF8);

wxLogMessage(wxT("%d | %s"), sqlite3_column_int(pStmt,0),str.c_str());
}

/* Завершаем запрос. Если ошибка SQLITE_SCHEMA
** произошло, то вышестоящий вызов sqlite3_step()
** вернул SQLITE_ERROR. sqlite3_finalize() вернет
** SQLITE_SCHEMA. В этом случае повторяем цикл.
*/
rc = sqlite3_finalize(pStmt);
}
while( rc==SQLITE_SCHEMA );

sqlite3_close(db);

Комментариев нет:

Отправить комментарий