Przykładowa baza danych FIREBIRD

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » czwartek, 1 kwietnia 2010, 00:25

Witam.
Chcę utworzyć w RAD Studio 2010 program który korzysta z bazy danych FIREBIRD. Mam utworzoną bazę danych, a w niej kilka rekordów. Chcę te dane wyświetlić przy pomocy komponentu DBGrid.

Proszę o jakieś wskazówki ewentualnie przykład jak mam to zrobić.

Pozdrawiam Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez ch2_lbn » czwartek, 1 kwietnia 2010, 19:06

Ja korzystam z SQLConnection przy laczeniu sie do bazy mysql wiec mysle ze i u ciebie moze ona posluzyc choc nie mam pewnosci musisz odpowiednio ustawic SQLConnection
a do dbGrida uzywam DataSource do którego zalaczam wynik z zapytania i automatycznie calosc jest odpowiednio wyswietlana w dbgridzie
Avatar użytkownika
ch2_lbn
 
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » czwartek, 1 kwietnia 2010, 21:23

w RS 2010 jest sterownik dbexpress dla firebirda wiec mozesz skozystac z tytch komponentow.
ogolnie schemat wyglada tak:

komponent polaczenia (XXXconection) --> komponent wykonujacy zapytanie/przechowujacy zbior wynikow(XXXDataSet albo XXXQuery) ----> komponenet DataSource ktory posredniczy pomiedzy zbiorem danych z gridem ---> kontrolka DBGrid.

XXX oznacza przedrostek dla komponentow np SQL, ADO, BDE itd... w zaleznosci od uzytych komponentow.
co do szczegulow pracy z poszczegulnymi komponentami odsylam do pomocy
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » piątek, 2 kwietnia 2010, 21:51

Na formatce dodałem odpowiednio komponenty:

1. SQLConnection - ustawiłem ConnectionName na FBCONNECTION, Connected na true,
2. SQLDataSet - ustawiłem CommandText na select *from baza_danych. Przy ustawieniu Active na true dostaje komunikat Token Unkown

Nie wiem czy dobrze postępuje proszę o pomoc to są moje początki pracy z bazami danych.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » piątek, 2 kwietnia 2010, 22:29

pzredstawie ci najprostszy schemat (najprostszy tzn zero kodu).

dajesz komponente SQLConnection, ustawiasz:
ConnectionName = FBConnection
Driver na Firebird (o ile sam sie nei zmienil po wybraniu nazwy)
rozwijasz Driver i wpisujesz sciezke do bazy, usera i haslo (ewentualnei kodowanie jesli potzrebne)
Vendor Lib ustawiasz na fbclient.dll. biblioteka ta musi byc w katalogu ktory znajduje sie w zmiennych srodowiskowych. nie wiem czemu ale podanie bezposrednio sciezki nie dziala u mnie.(nie mam czasu tego dociekac)
Active = true i jestes polaczony

dajesz komponent SimpleDataSet, ustawiasz:
connection, wybierasz swoje polaczenie
rozwijasz DataSet i w CommandText wpisujesz swoje zapytanie (zobacz jakie rodzaje zapytan mozna wprowadzic)
Active = true i masz pobrane dane

dajesz komponenet DataSource i dataset ustawaisz na swoj SimpleDataSet.

dajesz grida i jego daatasource ustawaisz na swoj datasource.

masz dane w gridzie.

w przypadku komponentwo dbexpress do wyswietleniea zapytanai w gridzie musisz stosowac SimpleDataSet a nie jak w innych zestawach bibliotek XXXQuery. jest to zwazane z tym ze w dbepxpress komponenent Query pracuje na kursorze forward only. SQLtable rowniez nie pozwoli na prezentacje danych w gridzie. aby prezentowac dane w w kontrolce DBGrid, pochodzace z query albo table tzrba skozyztsac dodatkowo z komponentwu DataSetProvider czy jakos tak.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » wtorek, 13 kwietnia 2010, 23:35

Bardzo dziękuję za cenne wskazówki odnośnie pracy z bazami danych. Wszystko to co opisałeś działa poprawnie.
Próbuję teraz uruchomić program który wykorzystuje moja przykładową bazę danych i pojawił się problem.

1. Baza działa bezproblemowo na moim komputerze. Mam zainstalowany firebird jako serwer. Na routerze mam przekierowany port 3050 firebirda (jest on dostępny w sieci). To połączenie działa poprawnie z komputera lokalnego.

2. Podczas uruchamiania aplikacji na komputerze drugim (klienta) nie działa to tak jak bym sobie tego życzył.
- Komputer klienta ma zainstalowaną wersje firebirda jako klient (biblioteka fbclient.dll) znajduje się w katalogu systemu.
- Podczas połączenia z moja bazą danych na komputerze klienta wyświetlił się komunikat (Unable to load dbxfb.dll).
- Skopiowałem ową bibliotekę do katalogu z programem i wszystko działa poprawnie.

Jak zrobić kompilację programu dla klienta aby nie było konieczności kopiowania tej biblioteki dll ?

Poniżej kod odpowiedzialny za połączenie programu z bazą danych.
Kod: Zaznacz cały
SQLBike->Params->Clear();
   SQLBike->DriverName="Firebird";
   SQLBike->LibraryName="dbxfb.dll";
   SQLBike->VendorLib="fbclient.dll";

   SQLBike->LoginPrompt=false;
   SQLBike->Params->Values["DataBase"]="sciezka do bazy danych";
   SQLBike->Params->Values["User_Name"]="rafal";
   SQLBike->Params->Values["Password"]="haslo";
   SQLBike->Connected=true;

   BikeDataSet1->Connection=SQLBike;
   BikeDataSet1->DataSet->CommandType=ctQuery;
   BikeDataSet1->DataSet->CommandText="select* FROM dystans";
   BikeDataSet1->Open();

   BikeDataSource1->DataSet=BikeDataSet1;
   DBGrid1->DataSource=BikeDataSource1;


Pozdrawiam

Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez Cyfrowy Baron » środa, 14 kwietnia 2010, 07:11

Istnieją pewne programy, które pozwalają włączyć biblioteki dll w zasoby programu, tworząc programy tzw portable, ale nie polecam tego. Dołączanie do programu bibliotek to standardowa procedura, wiele programów korzysta z dodatkowych bibliotek. Jeżeli ręczne kopiowanie programu razem z bibliotekami stanowi problem, to stwórz instalator, który będzie instalował program wraz z wszystkimi potrzebnymi bibliotekami.

Google: jak stworzyć program portable
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » środa, 14 kwietnia 2010, 21:02

Witaj Cyfrowy Baronie

Utworzenie programu w wersji portable mnie nie satysfakcjonuje. Dołączę chyba ten plik biblioteki do projektu, takie rozwiązanie w/g mnie jest lepsze. Może ktoś ma inne rozwiązanie tego problemu.

Przy dalszej pracy z moją bazą danych próbuję teraz dodawać rekordy od mojej bazy danych. Chcę to zrobić z wykorzystaniem komponentu Edit oraz Memo albo DBEdit i DBMemo.
Wpisywanie rekordów bazy danych poprzez zapytanie sql np:
Kod: Zaznacz cały
DataSet1->CommandText="INSERT INTO dystans (ID) VALUES (7)";

działa poprawnie, jednak chciałbym dane wpisywać do tablicy przy pomocy w/w komponentów. Proszę o radę.

Pozdrawiam

Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez Cyfrowy Baron » środa, 14 kwietnia 2010, 21:40

Może ktoś ma inne rozwiązanie tego problemu.


Nie ma innego rozwiązanie, albo włączasz bibliotekę DLL w zasoby programu, czyli tworzysz aplikację typu portable, albo dołączasz bibliotekę do programu, kopiując ją ręcznie lub tworząc instalator, który umieści wymaganą bibliotekę w katalogu z programem lub w katalogu systemowym.

Jakiego innego rozwiązania oczekujesz? Czy sądzisz, że ten program może działać bez tej biblioteki? Bo jeżeli nie to musisz jakoś tą bibliotekę dołączyć.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » środa, 14 kwietnia 2010, 21:46

Zgadza się tego nie kwestionuje, biblioteka musi być i tyle, bez tego nie będzie działał program.
Mając na myśli inne rozwiązanie myślę że jest inna metoda dołączenia automatycznie owej biblioteki do np katalogu z skapilowanym programem, podobnie jak uruchomienie aplikacji na stacjach roboczych które nie posiadają zainstalowanego oprogramowania RAD Studio.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez Cyfrowy Baron » środa, 14 kwietnia 2010, 21:52

myślę że jest inna metoda dołączenia automatycznie owej biblioteki do np katalogu z skapilowanym programem,


Zastanów się co ty piszesz?

Kompilowanie programu z bibliotekami tak by się uruchamiał na komputerach nie posiadających środowiska C++ Builder dotyczy tylko bibliotek tego środowiska i nie dotyczy bibliotek DLL.

Chyba nie sądzisz, że biblioteki same się skopiują?! :shock: Musisz jakoś te biblioteki przenieść na komputer użytkownika, jeżeli nie w zasobach programu, to ręcznie lub z wykorzystaniem instalatora.

Zdarzyło ci się na pewno instalować nie raz program, który oprócz samego pliku wrzuca do katalogu programu biblioteki DLL. Nie zawsze są to biblioteki tego programu. Dla przykładu program Adobe Bridge CS3 instaluje bibliotekę gdiplus.dll gdyż nie występuje w środowisku, a jest wymagana do obsługi GDI+. Podobnie jest z pakietem Microsoft Office i wieloma innymi korzystającymi z GDI+. Biblioteki te są instalowane w katalogu programu by nie wywoływać konfliktu w innych programach, które mogą korzystać z innej (nowszej - starszej) wersji tej biblioteki.

W Twoim przypadku jest tak samo.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » czwartek, 15 kwietnia 2010, 16:40

Dokładnie jest tak jak mówisz, pozostaje mi nic innego tylko ową bibliotekę dołączyć ręcznie do programu.

Ponawiam ponownie moje zapytanie odnośnie dodawania, usuwania rekordów z bazy danych.

Pozdrawiam

Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » czwartek, 15 kwietnia 2010, 17:38

rafalskraba napisał(a):... jednak chciałbym dane wpisywać do tablicy przy pomocy w/w komponentów. Proszę o radę.


sprecyzuj co i jak chcesz zrobic bo nie bardzo rozumiem.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » czwartek, 15 kwietnia 2010, 18:47

Chcę do bazy danych wpisywać dane z komponentów Edit oraz Memo albo TDBText oraz TDBMemo.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » czwartek, 15 kwietnia 2010, 19:06

komponenty TDB... sluza glownie do pobierania danych z bazy.

co do wstawiania to pokarze ci na przykladzie a ty sobie dostosujesz do swoich potrzeb:

Kod: Zaznacz cały
dataset->CommandText = "insert into mojatabela values(:nazwa)"//  <-------- :nazwa jest parametrem
dataset->ParamByName("nazwa")->AsString = edit->text; // <-------- ustawiasz paramert wartoscia z pola edit
dataset->Execute(); 


poczytaj w dokumentacji o parametarch, ich typach itd...
pamietaj o obsludze bledow podczas pracy z baza danych.

ps: pamietaj aby nie "sklejac" zapytania tylko uzywaj parametrow.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron