воскресенье, 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);

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

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