[bcb6] obsługa bazy danych mysql

0

Witam,
Mam jako projekt na studia z programowania program do obsługi biblioteki. Zdecydowałem się na wykorzystanie bazy danych - wydaje mi sie że to dużo łatwiejsze niż operacje na plikach. Ale pojawił się po drodze jeden mały mankament. Na uczelni posiadamy wersje personal i nie możemy do niej doinstalowywać nowych komponentów. Jednakże udało mi się do porozumienia z prowadzącym projekt, pozwolił dołączyć do projektu biblioteki dll. Zastanawiam sie nad uzyciem libmysql.dll ale nigdzie nie moge znalezc opisu jak tego uzyc :? (doczytałem o funkcjach LoadLibrary / GetProcAddress / FreeLibrary ale jakos to do mnie nie przemawia :) bymbył wdzięczny za jaką kolwiek pomoc :) )

Pozdrawiam

0

hm hm, na jakimś blogu kiedyś znalazłem dyskusję o SQLite w Builderze, sam link zniknął mi w pomrokach dziejów, ale potrzebne pliki + opis zostały na dysku. Rzuć okiem na zipa i dokument PDF, które wrzuciłem na serwer. Postępując wg opisu szybciutko i wygodnie wsadziłem SQLite do Buildera i na dodatek używa się klas C++, a nie API w C.

www.ranides.xt.pl/sqlite

Dopisane:
A, no właśnie - jeśli to ma być MySQL, a nie SQLite to ogólna zasada jest taka, wyszukujesz dystrybucję z binarnymi plikami, bierzesz i dodajesz plik lib do projektu. Jak nie ma liba dla C++ Buildera, to zamieniasz ten co jest za pomocą narzędzia coff2omf

SQLite wkręciło mi się, bo napisałeś, że to ma być alternatywa dla plików, a więc struktura klient-serwer nie jest ci potrzebna. Jeśli jednak przewidujesz układ: wiele programów klienckich korzysta z jednej bazy jednocześnie, to oczywiście MySQL.

0

Wielkie dzięki, znacznie ułatwi mi to prace :) i do tego jest bajecznie proste.
A co do ilości klientow to jeden wystarcza bez problemowo. Projekt ma działać na jednym wybranym komputerze.

Jeszcze raz wielkie dzięki!

0

Zrobilem wszystko jak jest opisane w pdf'ie przez Ciebie dostarczonym ale jakos nie chce dzialac caly program sie kompiluje wraz z lib i cppsqlite3.cpp ale pojawia sie maly problem... nie mam jak sie do tego wszystkiego odwolac. Tzn. jak wstawiam CppSQLite3DB db; to calss'y Form i gdziekolwiek indziej wywala mi błąd że nie wie co to jest ten CppSQLite3DB. Jak bys mogl zamiescic jakis przyklad jak to wszystko wstawic w kod borlanda bym byl wdzieczny :)

Pozdrawiam

0

hm, u mnie coś takiego chodzi:

#include "CppSQLite3.h"
CppSQLite3DB SData;

//....

__fastcall TfrmMainWin::TfrmMainWin(TComponent* Owner) : TForm(Owner) {
   try {
      SData.open("users.dat");
      SData.execDML("create table users(name char(20), surname char(20));");
      }
   catch(CppSQLite3Exception& e) {
      if(e.errorCode() != 1)
         ShowMessage(e.errorMessage());
      }
   }

itd itp. więc nie mam konceptu co ci sie tam pokićkało. include do CppSQLite3.h masz? i plik CppSQLite3.h jest w miejscu, które Builder widzi? (czyli w katalogu z projektem, albo w katalogu, który został dorzucony do search path, albo w standardowym include Buildera).

0

Nie wiem, nie pisałem w tej bibliotece, nie wiem jak wygląda - ale badałeś mysql++? Słyszałem o niej dużo dobrych opinii.

0

Ranides pomoglo :) wielkie dzieki ;) po raz drugi

Coldpeer a da sie to polaczyc z bcb6 ? bo mi sie wydaje ze nie...

0

no mi też coś po głowie chodzi, że MySQL++ i C++ Builder się nie lubią... w ogóle to BCB6 prawie niczego nie lubi, czasem to mnie aż szlag trafia. To znaczy, gdzieś tam "ludzie mówią", że da się zrobić build biblioteki dla BCB6, ale nie widziałem nikogo, kto by głośno mówił, że mu się udało, i ma w pełni funkcjonalną bibliotekę ;]

Gotowych binarek oczywiście nie ma do pobrania, więc znając życie, to byłaby nocka z życiorysu, żeby jako tako sobie poradzić z nim... a chyba nie ma sensu walczyć z MySQL w jakiejkolwiek wersji (i z wrapperami), jeśli struktury klient-serwer nie potrzeba.

Zresztą SQLite ma dużo lepszą wydajność z zastosowaniach, gdzie jeden program korzysta z "własnej" bazy. No i żaden proces serwera w tle nie chodzi. Dużo plusów IMHO.

0

DAC for MySQL , niestety za darmo jest tylko wersja z reklama ale dziala dokladnie tak jak inne komponenty do obslugi baz w BCB.

0

Do polaczenia BCB6 z MySQL polecam zdecydowanie komponenty ZEOSlib.

sluze pomoca pod nr gg 10912365

0

Robię wszystko tak jak jest to opisane w PDFie i powstaje błąd. Inkluduję pliki

#include "CppSQLite3.cpp"
#include "CppSQLite3.h"
#include "sqlite3.h"

do projektu. Modyfikuje plik *.lib i wrzucam go do katalogu z projektem. Podczas kompilacji wyrzuca mi błąd:

Build
  [C++ Error] CppSQLite3.cpp(1156): E2268 Call to undefined function 'sprintf'
  [C++ Error] sqlite3.lib(1): E2206 Illegal character 'đ' (0xf0)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '' (0x3)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '€' (0x80)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '' (0x1c)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '' (0x0)

To moje pierwsze starcie z bazami danych w Borlandzie więc proszę o wyrozumiałość.

0

Od razu mówię, że nie korzystam z Bulider'a, jestem dziecko MinGW, ale można się domyślać o co chodzi

Build
  [C++ Error] CppSQLite3.cpp(1156): E2268 Call to undefined function 'sprintf'

hmm a czy jest #include <stdio.h>(C) lub <iostream>(C++) w CppSQLite3.cpp?

  [C++ Error] sqlite3.lib(1): E2206 Illegal character 'đ' (0xf0)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '' (0x3)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '€' (0x80)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '' (0x1c)
  [C++ Error] sqlite3.lib(2): E2206 Illegal character '' (0x0)

Jak modyfikowałeś qlite3.lib ręcznie w jakimś edytorze to wygląda na źle wyedytowany, zgłasza jakieś niedozwolone znaki, być może użyłeś złego systemu kodowania znaków przy zapisie? Widzisz w zależności od systemu kodowania znaki mogą mieć różne wartości... ciekawe czy się kiedyś doczekamy, że systemy kodowania znikną a wszędzie będzie uzywany unikod :>

0

Trochę się pobawiłem i teraz otrzymuje błedy typu:

Build
  [Linker Error] Unresolved external '_sqlite3_close' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_free' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_open' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_errmsg' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_mprintf' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_busy_timeout' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_exec' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
  [Linker Error] Unresolved external '_sqlite3_changes' referenced from C:\DOCUMENTS AND SETTINGS\PAWEL\PULPIT\TEST_R\UNIT1.OBJ
0

Proszę o pomoc w uruchomieniu obsługi baz danych w Borland Builder C++ 6.0 Personal. Wsztstko robiłem zgodnie z opisem i coś nie działa. Poniżej zamieszczam aplikację z Borlanda (z błędami). Ja już nie mam na to pomysłów i nie wiem co robię źle. Proszę o pomoc.

</url>www.ibex.hekko.pl/test.zip</url>

0

Link z tymi klamotami od wieków nie działa, ale ponieważ, o dziwo, przynajmniej raz na miesiąc mail przychodzi właśnie w związku z tym wątkiem, to link do info:

http://mazdac.wordpress.com/2007/03/04/borland-i-sqlite/

Sam artykuł nic nie daje, ale wszystko co trzeba, to jest w komentarzach. W moich klamotach nie było wiele więcej niż uporządkowane wyjaśnienie właśnie z tych komentarzy + gotowe pliki zrobione zgodnie z instrukcjami. Bez problemu każdy sobie poradzi, jak przeczyta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1