Wykorzystanie biblioteki sqlite w C

http://www.sqlite.org/cintro.html

#include <sqlite3.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    /* otwarcie/stworzenie bazy danych */
    struct sqlite3 *db;
    sqlite3_open("database.db", &db);

    /* wykonanie gotowego zapytania */
    const char *sql = "CREATE TABLE pracownicy("\
        "id INTEGER PRIMARY KEY AUTOINCREMENT, "\
        "imie VARCHAR(255), "\
        "nazwisko VARCHAR(255));";
    struct sqlite3_stmt *stmt;
    sqlite3_prepare(db, sql, -1, &stmt, NULL);
    sqlite3_step(stmt);
    sqlite3_finalize(stmt);

    /* dodanie danych w pętli, wykorzystanie zapytań przygotowanych */
    const char *data[2][2] = { { "Jan", "Nowak" }, { "Adam", "Kowalski" } };
    sql = "INSERT INTO pracownicy(imie, nazwisko) VALUES(?, ?);";
    sqlite3_prepare(db, sql, -1, &stmt, NULL);
    int i;
    for (i = 0; i < 2; i++) {
        sqlite3_bind_text(stmt, 1, data[i][0], -1, SQLITE_STATIC);
        sqlite3_bind_text(stmt, 2, data[i][1], -1, SQLITE_STATIC);
        sqlite3_step(stmt);
        sqlite3_reset(stmt);
    }
    sqlite3_finalize(stmt);

    /* odczytanie danych z bazy */
    sql = "SELECT imie, nazwisko FROM pracownicy ORDER BY nazwisko;";
    sqlite3_prepare(db, sql, -1, &stmt, NULL);
    while (sqlite3_step(stmt) == SQLITE_ROW) {
        printf("Imie: %s\tNazwisko: %s\n",
                sqlite3_column_text(stmt, 0),
                sqlite3_column_text(stmt, 1));
    }
    sqlite3_finalize(stmt);

    /* zamknięcie połączenia */
    sqlite3_close(db);
    return 0;
}