úterý, května 20, 2008

KDevelop vs. databáze SQLite

V poslední době jsem řešil problém, jakým způsobem jednoduše zahrnout do KDE aplikace vytvořené v KDevelopu výše zmíněnou databázi. Řešení se nakonec ukázalo jako docela jednoduché. Protože jsem tvor zapomětlivý a téměř jistě tento postup časem zapomenu, raději ho sepisuji a třeba se nakonec bude hodit i někomu jinému.

Proč jsem se vydal cestou vlastní kompilace ze zdrojových kódů SQLite a nenechal vše na vlastních ovladačích knihovny QT ? Protože aktualizace zdrojových kódů databáze je docela častá a knihovna QT je nereflektuje dostatečně včas a ve verzi QT knihovny 3.3 se mi povedlo otevřít pouze databázové soubory SQLite verze 2 (aktuální je SQLite formát verze 3). Možná byla chyba na mojí straně – nevím, dále jsem to do podrobností nezkoumal.

Celý postup je otestován na distribuci Fedora Core 9 (Sulphur) a použitá verze KDevelopu byla 3.5.1. Vše je ukázáno na jednoduché aplikaci pojmenované SQLiteTest, která v konečném stavu umí pouze otevřít a uzavřít testovací databázi. Další funkce by již neměl být problém doimplementovat, stačí prozkoumat soubory sqlitedb.h a sqlitedb.cpp, které tvoří wrapper nad samotnou knihovnou databáze a taktéž obsahují všechny funkce potřebné k běžným operacím nad databází.

  1. Stáhneme zdrojové kódy databáze SQLite ze stránek projektu (http://www.sqlite.org). Já použil ZIP archív, ve kterém jsou uloženy jenom čisté zdrojové kódy bez konfiguračních skriptů.
  2. Vytvoříme nový projekt v KDevelopu: menu Project -> New project..., zvolíme C++ -> KDE -> Simple KDE Application a projekt pojmenujeme SQLiteTest.
  3. Zobrazíme záložku AutoMake Manageru (pravá část okna KDevelopu). V hořením stromě označíme složku src, klikneme na ní pravým tlačítkem a zvolíme Add new subproject... a nazveme jej sqlite_source.
  4. Do nově vzniklé složky sqlite_source v adresářové struktuře našeho projektu nakopírujeme céčkovské i hlavičkové soubory zdrojových kódů databáze SQLite (POZOR ! - bez souboru tclsqlite.c - POHOV !).
  5. V Automake manageru v horním stromě označíme složku sqlite_source, klikneme na ní pravým tlačítkem a zvolíme Add target...
  6. V zobrazeném dialogovém okně nastavíme volbu Primary na Library, Prefix na lib, vyplníme File name hodnotou libsqlite.so a stiskneme tlačítko OK
  7. V Automake manageru v dolním stromě klikneme pravým tlačítkem na libsqlite.so.a a zvolíme Add Existing files...
  8. V zobrazeném dialogovém okně v levé části vybereme všechny *.c a *.h soubory, stiskneme tlačítko Add selected a stiskneme OK.
  9. V Automake manageru v horním stromě označíme složku src, poté v dolním stromě vybereme sqlitetest, stiskneme na něm pravé tlačítko myši a zvolíme Options, přejdeme do záložky Libraries a v sekci Link convenience libraries inside project (LDADD) zaškrtneme knihovnu src/sqlite_source/libsqlite.so.a a potvrdíme stiskem tlačítka OK. Může nastat problém s komentáři ve zdrojových kódech vlastní databáze - tzn. vyhodit ze zdrojáků všechny řádky začínající '//' (komentáře).
  10. Následuje přidání wrapperu nad databází SQLite do naší aplikace. Já jsem si vypůjčil jeden z projektu SQLiteBrowser. Do src složky aplikace nakopírujeme soubory sqlitedb.cpp, sqlitedb.h, sqlbrowser_util.cpp a sqlbrowser_util.h. V honím stromě Automake manageru si označíme složku src a v dolním stromě poté pravým tlačítkem klikneme na složku sqliteexp a zvolíme volbu Add existing files... Poté v dialogovém okně označíme sqlitedb.cpp, sqlitedb.h, sqlbrowser_util.cpp, sqlbrowser_util.h, stiskneme Add selected a potvrdíme tlačítkem OK.
  11. Poté již stačí poupravit sqliteexp.cpp (nezapomenout na #include "sqlitedb.h" )
  12. Zvolíme Build project v menu Build a je to...
Celá ukázková aplikace je připravena ke stažení zde - SQLiteTest.tar.gz. Ve složce src je uložena i testovací databáze testik.db.

That's all, folks !


Žádné komentáře: