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.





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
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:
ten plik cpp nie chce sie od razu kompilowac w builderze.. trzeba przerobic jego nagłówek. Oto moja przerobka na szybko:
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
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!
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
dalej nic? zero odpowiedzi
jakby co to proszę o odpowiedź na gg: 1080780
Witam,
Trafiam tu tylko w momencie gdy szukam czegoś o SQLite
Aktualnie jestem na etapie opisywania swojej aplikacji, więc musiałem poszukać odnośnika co wrappera i w wynikach googla znalazłem ten wpis :]
przepraszam ze nie odpowiadalem, raczej tutaj nie zagladam
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
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.
ależ ja nie mam do nikogo pretensji
chyba chodziło o kolegę PiKey?
pozdrawiam wszystkich!
poprawione
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++??
http://www.sqlite.org/capi3ref.html