Borland i SQLite

Otóż robię prosty projekt – program dla solarium do zarządzania karnetami itd. Jako narzędzie do tworzenia graficznego interfejsu użytkownika wybrano mi Borland C++ Builder 6 Personal – jako że poprzedni twórca projektował już wcześniej GUI w tym właśnie programie. Nie miałbym nic przeciwko gdyby nie pewien szkopuł, otóż do przetrzymywania danych o klientach zamierzałem użyć SQLite – szybkość i prostota użycia. Niestety w wersji Personal produktu Borlanda nie da się doinstalować paczki z tą biblioteką, gdyż brakuje kolejnych dwóch paczek, które znajdują się w bardziej zaawansowanych wersjach (dużo droższych). Kontrastuje to bardzo ze śledzeniem zależności i menadżerem paczek w Dev-C++ w którym out-of-the-box zainstalowałem SQLite, z kolei brakuje mi w nim implementacji vcl do uzycia bezpośrednio programów z Borlandalub graficznego edytora okienek opartego na wolnych qt lub gtk. Ciekawe tylko jak te biblioteki mają się do Visty, której używam. Co zatem robić? Zostaję na gentoo i tutaj stworzę aplikację dla windows, raczej w qt ale gtk nie wykluczam – ot do czego doszło, tworzę program dla Windows pod innymi systemami.

9 Odpowiedzi do “Borland i SQLite”


  1. 1 stranger 08/19/07 o 03:11

    Witam,

    mialem ten sam problem. Tylko raczej ciezko byloby dla mnie rezygnowac z Buildera.. po paru latach jest dla mnie na prawde wygodny i szybko w nim potrafie budowac GUI… a tego wlasnie aktualniue potrzebuje;-) Projekt dodatkowo wymaga jakiejs podkladki do przetrzymywania danych… w Personal nie ma zadnych praktyczie ze komponentow do obslugi DB, wiec pomyslalem ze SQLite bedzie idealny… no i zaczal sie ten sam problem ;-) pomijajac historie ze sciaganiem kilkunastu roznych frameworkow itp. w koncu udalo sie… SQLite ruszyl :D nie jest to najnowsza wersja (mnie to nie przeszkadza), ale działa (póki co;-) ). Oto co zadziałało:

    1. sciagnalem C++ wrapper na sqlite3:
    http://www.codeproject.com/database/CppSQLite.asp
    2. z paczki interesujacy jest podkatalog 3.1/common (reszta to bardzo pomocne w dalszym programowaniu przyklady)
    3. do projektu w builderze dodajemy pliczek CppSQLite3.cpp
    4. umieszczamy gdzies pliczki CppSQLite3.h i sqlite3.h tak zeby byly one widoczne w projekcie (tak zeby mozna bylo je includowac)
    5. przerabiamy pliczek *.lib poleceniem (ten aktualny lib wygenerowany jest przez Visual, czyli dla Buildera jest bezuzyteczny, trzeba go przekonwertowac)
    coff2omf.exe stary_plik.lib nowy_plik.lib (coff2omf.exe znajduje sie w katalogu buildera/bin)
    6. nowy pliczek lib takze dodajemy do projektu
    7. plik dll umieszczamy w miejscu z ktorego bedzie widoczny… najlepiej w katalogu glownym projektu
    8. i juz …
    9. …a zapomnialbym :P ten plik cpp nie chce sie od razu kompilowac w builderze.. trzeba przerobic jego nagłówek. Oto moja przerobka na szybko:
    plik CppSQLite.h sam poczatek pliku, pierwsze includy

    #ifndef _CppSQLite3_H_
    #define _CppSQLite3_H_

    #include “sqlite3.h”
    //#include
    #include
    #include
    //#include
    #include

    ..chyba kazdy sie zorientuje co wykomentowalem co dodalem.

    to chyba tyle :-) wyglada jakby dzialalo. mam nadzieje ze komus sie przyda, pozdrawiam gorąco!

  2. 2 PiKey 08/26/07 o 03:47

    witam
    stranger, bardzo dziękuję za linka do bibliotek c++, przydały się one zapewne mazdac’owi tak jak mi, jednak dokumentacja sqlite i przykłady są dla mnie niezrozumiałe.
    Czy posiadacie jakieśdobre, czytelne kursy zastosowania SQLite w C++?
    Pozdrawiam
    PiKey :)

  3. 3 PiKey 08/28/07 o 02:43

    dalej nic? zero odpowiedzi :(
    jakby co to proszę o odpowiedź na gg: 1080780

  4. 4 stranger 10/2/07 o 10:11

    Witam,
    przepraszam ze nie odpowiadalem, raczej tutaj nie zagladam ;-) Trafiam tu tylko w momencie gdy szukam czegoś o SQLite :P Aktualnie jestem na etapie opisywania swojej aplikacji, więc musiałem poszukać odnośnika co wrappera i w wynikach googla znalazłem ten wpis :]

    Odpowiadam tutaj bo może więcej osób na tym skorzysta. Kursów żadnych nie znam i takowych chyba raczej nie ma… jakoś nie jest wyjatkowo popularna ta biblioteka (SQLite) w kregach windowsowych (w odróżnieniu od Linuksa). Ale jak dla mnie to te przykłady dostępne razem z wrapperem są bardzo przejrzyste i klarowne. Bazowałem tylko na nich.. jak potrzebowalem coś zrobić szukałem tego w przykładach i zawsze znalazłem. Tutaj opisze tylko najprostszy przyklad (takie same są w paczce z CppSQLite3)

    CppSQLiteDB db;
    db.open(gszFile); // tworzy bazejesli ta nie istnieje

    // wykonuje dowolne zapytanie SQL
    db.execDML(”create table emp(empno int, empname char(20));”);

    // znow SQL
    db.execDML(”insert into emp values (7, ’stranger’);”);
    db.execDML(”insert into emp values (11, ‘PiKey’);”);

    // zapytanie do bazy – otrzymujemy obiekt kwerendy
    CppSQLiteQuery q = db.execQuery(”select * from emp;”);
    // lecimy przez wszystkie zwrocone rekordy
    while(!q.eof()) {
    // a w kazdym rekordzie przez wszystkie pola danego rekordu
    for (int i = 0; i < q.numFields(); ++i)
    {
    // mozemy pobrac nazwe pola oraz jego typ
    cout << q.fieldName(fld) << “(” << q.fieldType(fld) << “)”;
    // no i oczywiscie sam wartosc ;-)
    cout << ” = ” << q.fieldValue(0) << ” — “;
    }
    cout << endl;
    q.nextRow();
    }
    // zamykamy cale nasze zapytanie …
    q.finalize();
    // oraz sama baze daych
    db.close();

    warto także pamiętac ze sqlite wspiera transakcje z czego proponuje zawsze korzystać, gdyż znacznie to przyspiesza działanie aplikacji. Transkcje dokonujemy bajecznie prosto ;-)

    db.execDML(”begin transaction;”);

    // duzo pracy na bazie, wstawianie, pobieranie itp.

    db.execDML(”end transaction;”);

    prawda ze proste? :-)

    mam nadzieje ze sie troche cos naprostowalo i bedzie latwiej

    pozdrawiam

  5. 5 mazdac 10/2/07 o 02:22

    PiKey, wiesz trudno jest pisać gdy brak sieci, przez 2 miechy nie mam już dostępu do sieci i naprawdę, tyle czasu co spędzam w szkole (moje jedyne źródło internetu) nie jest w stanie zrekompensować tego czego nie posiadam w domu.

  6. 6 stranger 10/3/07 o 10:22

    ależ ja nie mam do nikogo pretensji :-) chyba chodziło o kolegę PiKey? ;-)

    pozdrawiam wszystkich!

  7. 8 Abaddor 10/23/07 o 07:23

    Wielkie dzięki. To jednak prawda ze w internecie NIE MA żadnego kursu SQLite dla c++. Masakra co sie naszukałem. Tylko mam pytanie. Skąd sie nauczyłeś tych funkcji? Może znasz jakąś książkę o SQLite dla C++??


Napisz odpowiedź