CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Podstawy

Podstawy

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.

Podstawy

Nowy postprzez oneiro » sobota, 26 października 2013, 23:38

Witam,

InterBase w wydaniu FB 2.5 Komponenty w kodzie.

KOD cpp:     UKRYJ  
IBDatabase1->DatabaseName=nazwa_pliku;
IBDatabase1->Connected=true;
IBTransaction1->Active=true;
IBDataSet1->SelectSQL->Text="select rdb$relation_name from rdb$relations where rdb$view_blr is null  and (rdb$system_flag is null or rdb$system_flag = 0);";
IBDataSet1->Active=true;
 


Dalej mam połączenie z DBGrid, gdzie mam wynik (wynik to lista tabel). A jak teraz przyporządkować to do zmiennej w programie? Czyli jak skierować odpowiedź do zmiennej (tablicowej)?
Tutaj jest trochę zagmatwane, gdyż mogę mieć więcej niż jeden wynik (stąd albo zmienna albo tabelaryczna zmienna).

I jeszcze jedno pytanie z podstaw - jak odczytać/zapisać konkretny rekord (komórkę z tabeli).
Ja to widzę tak - jest tabela, pewnie jest jakiś wskaźnik numeru wierszu, który muszę podać oraz kolumną. Zapewne na podstawie tych danych mogę wyciągnąć/zapisać konkretne dane.

PS. Może podacie jakieś linki jak w technologii InterBase zrobić cały program, albo jakieś działające przykłady, ewentualnie artykuły. Nic konkretnego nie mogę znaleźć :/

Krzysiek
Avatar użytkownika
oneiro
Homos antropiczny
Homos antropiczny
 
Posty: 96
Dołączył(a): niedziela, 17 czerwca 2012, 23:19
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: C++ Builder v6
Gadu Gadu: 0
    Windows XPChrome

Re: Podstawy

Nowy postprzez Mironas » poniedziałek, 28 października 2013, 14:39

To może zamiast odpowiedzi wstawię mały poradnik:

Tworzenie bazy danych w IBExpert:

Baza >> Utwórz bazę danych...
Serwer: Lokalny
Baza danych: C:\BAZA01.FDB
Użytkownik: SYSDBA
Hasło: masterkey
Zestaw znaków: WIN1250
Dialekt SQL: Dialekt 3

Rejestracja bazy danych w IBExpert:
Parametry jak powyżej.

Połączenie z bazą danych:
DblClick na wybranej DB w zakładce 'Bazy danych'.

Tworzenie tabeli:
Baza >> Nowa tablica
Nazwa: np PERSONEL
Pierwsze pole ID (autonumerowane):
- Komórka 'PK': kliknąć podwójnie (klucz główny)
- Komórka 'Nazwa pola': ID
- Komórka 'AutoInc': zaznaczyć, w oknie 'Pole autoincrement'
- - Zakładka 'Generator' zaznaczyć 'Utwórz generator'
- - Zakładka 'Wyzwalacz' zaznaczyć 'Utwórz wyzwalacz'
- - Zakładka 'Procedura' zaznaczyć 'Utwórz procedurę'
- OK
Pozostałe pola utworzyć wg uznania
Utworzenie tabeli: Kompiluj (Ctrl+F9)
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podstawy

Nowy postprzez Mironas » poniedziałek, 28 października 2013, 14:44

Podłączenie bazy FB za pomocą komponetów IBX:

IBDatabase1:
DatabaseName = "C:\BAZA01.FDB";
DblClick >>
- User Name: sysdba
- Password: masterkey
- Character Set: wIN1250
- Login Prompt: false

IBTransaction1:
DefaultDatabase = IBDatabase1;
DefaultAction = TACommit;
DblClick >> wybrać opcję 'Read Committed'

IBQuery1
(Jeśli chcesz podłączyć tabelkę w trybie ReadOnly lub jeśli chcesz wykonywać pojedyncze zapytania select/update)
Transaction = IBTransaction1
SQL = "select * from PERSONEL"
DblClick >> RightClick >> Add all fields
- to pozwala na dostęp do wybranego pola za pomocą:
KOD cpp:     UKRYJ  
IBQuery1NAZWISKO->AsString = "Kowalski";


IBDataSet1
(Jeśli chcesz zmieniać zawartość podłączonej tabeli za pomocą komponentów edycyjnych)
Transaction = IBTransaction1;
SelectSQL = "select * from PERSONEL"
RightCilck >> Dataset Editor... >>
- W 'Key Fields' wybrać pole 'ID'
- W 'Updade Fielda' wybrać wszystkie pola
- Kliknąć: 'Generate SQL', 'OK'
GeneratorField >>
- Generator = "GEN_PERSONEL_ID"
- Field = "ID"
DblClick >> RightClick >> Add all fields

DataSource1
DataSet = IBQuery1/IBDataSet1

DBGrid1
DataSource = DataSource1
DblClick >> RightClick >> Add All Fields

KOD cpp:     UKRYJ  
  // Podłączenie do bazy danych, otwarcie tabel
  IBDatabase1->Open();
  IBQuery1->Open();
  IBQuery1->Open();

  // Zamknięcie połączenia
  IBDatabase1->Close();
 
Ostatnio edytowano poniedziałek, 28 października 2013, 14:56 przez Mironas, łącznie edytowano 1 raz
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podstawy

Nowy postprzez Mironas » poniedziałek, 28 października 2013, 14:52

Powyższy przykład pokazuje najprostszy sposób zatwierdzania transakcji gdzie każda zmiana jest natychmiast zatwierdzana. W praktyce lepiej stosować zatwierdzenie transakcji w tym momencie kiedy nam to odpowiada. Np jeśli mamy w oddzielne okno do edycji jakiejś tabeli to w tym oknie można umieścić oddzielny TIBTransaction z parametrem:
DefaultAction = TARollbackRetaining;
A po wykonaniu jakiś zmian (np przy zamknięciu okna):
KOD cpp:     UKRYJ  
IBTransaction1->CommitRetaining();

A jeśli chcemy anulować zmiany:
KOD cpp:     UKRYJ  
IBTransaction1->RollbackRetaining();

Tylko trzeba pamiętać aby zawsze zatwierdzić lub anulować wprowadzone zmiany.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podstawy

Nowy postprzez Mironas » poniedziałek, 28 października 2013, 15:05

No i jeszcze przykład dodania rekordu do tabeli za pomocą kodu:
KOD cpp:     UKRYJ  
  IBDataSet1->Append();
  IBDataSet1NAZWISKO->AsString = "Kowalski";
  IBDataSet1IMIE->AsString = "Jan";
  IBDataSet1->Post();
  IBTransaction1->CommitRetaining();
 
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome


  • 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 1 gość

cron