пятница, 8 октября 2010 г.

Использование базы данных на sqlite

Есть такой вариант облеченной базы mySQL.

Главное отличие от MySQL в отсутствии сервера, т.е. базу можно создавать и использовать локально - на том компе, где установлена прога.


Для создания БД можно использовать:
  • Командную строку (дополнительно качаем tools c сайта-проекта)
  • GUI интерфейс, бесплатный sqlite browser берем отсюда: http://sqlitebrowser.sourceforge.net/
  • Программно, пользуясь API (качаем source code c сайта-проекта)

Сайт проекта:
http://www.sqlite.org

По русски, описание и пример:
http://www.codenet.ru/db/other/sqlite/
http://www.samag.ru/cgi-bin/go.pl?q=articles;n=02.2004;a=04

Установка:
Скачиваем исходники, и далее подключаем библиотеки sqlite3 к своему проекту.

Пример номер 1
- Создание/открытие БД
- Создание таблицы
- Завершение работы с БД


#include <iostream> 
#include "sqlite3.h" 

using namespace std; 

int main(int argc, char **argv) 
{ 
    cout << "Hello world SQLite!" << endl; 
    char *db_name="test.sl3"; 
    sqlite3 *db; 
    char *zErrMsg = 0; 
    int error; 

    //Создание или открытие БД 
    error = sqlite3_open(db_name, &db); 
    if ( error ) 
    { 
        cout<<"Can't open database: "<<sqlite3_errmsg(db)<<endl; 
        sqlite3_close(db); 
    } 

    //Создание таблицы 
    error = sqlite3_exec(db, "CREATE TABLE table1 (id INTEGER PRIMARY KEY,field1 TEXT,field2 TEXT);", NULL, 0, &zErrMsg); 
    if ( error ) 
    { 
        cout<<"Can't create tables: "<<sqlite3_errmsg(db)<<endl; 
        sqlite3_close(db); 
    } 

    sqlite3_close(db); 

    return 0; 
} 

Пример номер 2


- Создание/открытие БД
- Создание таблицы
- Вставка данных
- Выборка из БД и отображение на экране результата
- Завершение работы с БД


#include <iostream>
#include "sqlite3.h"

using namespace std;

int main(int argc, char **argv)
{
    cout << "Hello world SQLite!" <<endl<<endl;
    char *db_name="test.sl3";
    sqlite3 *db;
    char *zErrMsg = 0;
    int error;

    //------------------------------
    //Создание или открытие БД
    //------------------------------
    error = sqlite3_open(db_name, &db);
    if ( error )
    {
        cout<<"Can't open database: "<<sqlite3_errmsg(db)<<endl;
        sqlite3_close(db);
    }

    //------------------------------
    //Создание таблицы
    //------------------------------
    //Если таблица уже создана, то эта конструкция будет выдавать ошибку!
    error = sqlite3_exec(db, "CREATE TABLE table1 (id INTEGER PRIMARY KEY,field1 TEXT,field2 TEXT);", NULL, 0, &zErrMsg);
    if ( error )
    {
        cout<<"Can't create table: "<<sqlite3_errmsg(db)<<endl;
        sqlite3_close(db);
    }

    //------------------------------
    //Ввод данных в таблицу
    //------------------------------
    error = sqlite3_exec(db, "INSERT INTO table1(field1, field2) VALUES ('Super', 'SQL');", NULL, 0, &zErrMsg);
    if ( error )
    {
        cout<<"Can't insert data to table: "<<sqlite3_errmsg(db)<<endl;
        sqlite3_close(db);
    }

    //------------------------------
    //Выборка данных из базы
    //------------------------------
    sqlite3_stmt    *res;
    const char      *tail;

    error = sqlite3_prepare_v2(db,"SELECT field1, field2,id from table1 order by id", 1000, &res, &tail);
    if ( error )
    {
        cout<<"Can't select data: "<<sqlite3_errmsg(db)<<endl;
        sqlite3_close(db);
    }
    //Отображаем на экране
    cout << "Display result from table1" << endl;
    int     rec_count = 0;
    while (sqlite3_step(res) == SQLITE_ROW)
    {
        cout<<"Row ("<<rec_count<<"):"<<sqlite3_column_text(res, 0)<<" ";
        cout<<sqlite3_column_text(res, 1)<<" ";
        cout<<sqlite3_column_text(res, 2)<<endl;

        rec_count++;
    }

    //------------------------------
    //Корректное завершение работы с БД
    //------------------------------
    sqlite3_close(db);
    return 0;
}  

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

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