Przekazywanie parametry połączenia zIB

0

Chodzi o to że chce w programie umożliwoć użytkownikowi konfigurację połączenia z bazą dancyh (InterBase), tyle że nigdzie nie mogę znaleźć jak przed połączeniem się z bazą usawić takie informacje jak czy to jest serwer lokalny czy zdalny, jak zdalny to jaki adres i jaki protokół no i samą lokalizację bazy danych.
Wszytsko co znalazłem to tylko ustawienie nazwy użytkownika i hasło:
IBDatabase1.Params.Values['user_name']
IBDatabase1.Params.Values['password']

Jeżeli odpowiedź na moje pytanie jest już na forum to sorki ale mam jeszcze połączenie modemowe i dokładnie nie przeszukałem całego forum, nie mniej jednak będę wdzięczny za odpowiedź.

0
Młody_pytajnik napisał(a)

Chodzi o to że chce w programie umożliwoć użytkownikowi konfigurację połączenia z bazą dancyh (InterBase), tyle że nigdzie nie mogę znaleźć jak przed połączeniem się z bazą usawić takie informacje jak czy to jest serwer lokalny czy zdalny, jak zdalny to jaki adres i jaki protokół no i samą lokalizację bazy danych.

no ciekawe, bo w helpie dokładnie pisze

help Delphi napisał(a)

Specifies the name of the database to associate with this database component.

Delphi syntax:
property DatabaseName: String;

Description

Use DatabaseName to specify the name of the database to use with a database component. For local InterBase databases, this can be a filename.
To connect to an InterBase database on a remote server using TCP/IP the syntax is <server_name>:<filename>.
To connect to an InterBase database on a remote server using NetBEUI, the syntax is: \<server_name><filename>.
To connect to an InterBase database on a remote server using SPX, the syntax is: <server_name>@<filename>.Specifies the name of the database to associate with this database component.

Wszytsko co znalazłem to tylko ustawienie nazwy użytkownika i hasło:
IBDatabase1.Params.Values['user_name']
IBDatabase1.Params.Values['password']

help Delphi napisał(a)

Specifies the database parameters to pass to the InterBase server.
Delphi syntax:

property Params: TStrings;

Description

Use Params to specify the database parameters to pass to the InterBase server.
Database parameters are passed to the server as text in order to establish the connection. For example:
user_name=sysdba
password=masterkey
sql_role_name=finance
lc_ctype=WIN1252

For more information on character sets, refer to ?Character Sets and Collation Orders? in the InterBase Language Reference.
For other information, refer to the InterBase API Guide.

a i jeszcze nie wiem jak zamierzasz tego używać

IBDatabase1.Params.Values['user_name'] 
IBDatabase1.Params.Values['password'] 

ale, żebyś się nie przejechał radził bym przed połączeniem robić raczej tak

IBDatabase1.Params.Clear;
IBDatabase1.Params.Add('user_name=SYSDBA');
IBDatabase1.Params.Add('password=MASTERKEY');
IBDatabase1.Params.Add('lc_ctype=WIN1250');

chociaż samo

IBDatabase1.Params.Clear;

wystarczy i możesz przypisywać parametry po Twojemu albo mojemu :)

0

Sorki ale nie jestem takim wyjadaczem jak Ty i niestety to co mi napisałeś nic mi nie pomaga :( Jeżli jest ktoś w stanie napisać odpowiednie komendy (ew. fragment kodu) przypisaujace w/w parametry to znacznie ułatwi mi prace.
PS. Mam dopiero 12 lat, więc zlitujcie się nademną...

0

Właściwie Misiekd już wszystko napisał ale zważywszy na wiek pytacza...
Kawałek mojego kodu, wrzuć go do OnCreate formy lub modułu /tam gdzie masz IBDataBase1, u mnie moduł/

procedure TDM.DataModuleCreate(Sender: TObject);
begin
try
  IBDataBase1.Connected := False; //tak na wszelkie ale
  with IBDataBase1 do
    begin
      Params.Clear;
      Params.Add('user_name=SYSDBA');
      Params.Add('password=MASTERKEY');
      Params.Add('lc_ctype=WIN1250');
      DatabaseName := ExtractFilePath(Application.ExeName)+'plik.FDB';  //to lokalny serwer FB
      Connected;
    end;
except;
  raise;
end;
end;
0
Młody_pytajnik napisał(a)

Sorki ale nie jestem takim wyjadaczem jak Ty i niestety to co mi napisałeś nic mi nie pomaga :( Jeżli jest ktoś w stanie napisać odpowiednie komendy (ew. fragment kodu) przypisaujace w/w parametry to znacznie ułatwi mi prace.
PS. Mam dopiero 12 lat, więc zlitujcie się nademną...

najpierw ścieżka do bazy
z serwerem możesz się połączyć na dwa sposoby

  1. lokalnie (czyli plik z bazą oraz serwer musi sie znajdować na tym samym kompie co program)
    wtedy jako DatabaseName podajesz (najlepiej pełną) ścieżkę do bazy i tyle, np
DatabaseName := 'c:\bazy\moja.fdb'
  1. zdalnie (plik i serwer mogą być gdziekolwiek (jednak oba powinny być na tej samej maszynie)). Tu mamy znowu trzy możliwości połączenia
    a) TCP - do połączenia używamy protokołu TCP a do DatabaseName wpisujemy coś takiego nazwa_serwera:sciezka_do_pliku_na_serwerze, np (mój serwer FB stoi na linuxie więc w ścieżce podaje / a nie )
DatabaseName := '192.168.0.1:opt/firebird/databases/test.fdb'

oczywiście nic nie stoi na przeszkodzie, żeby wpisać adres kompa w internecie.
b) NetBEUI (NamedPipe) do DatabaseName wpisujemy \nazwa_serwera<i>sciezka_do_pliku_na_serwerze</i>, np

DatabaseName := '\\edek\c:\test.fdb'

edek to nazwa kompa :)
c) SPX do DatabaseName wpisujemy nazwa_serwera@sciezka_do_pliku_na_serwerze, np

DatabaseName := 'edek@c:\test.fdb'

jeśli masz skonfigurowany plik aliases.conf (domyślnie jest w C:\Program Files\Firebird\Firebird_x_x) to zamiast ścieżki do pliku możesz podać alias

Szczerze powiem, że zawsze łączę się do bazy zdalnie poprzez TCP, nawet jeśli program i serwer są na tej samej maszynie. Przez NetBEUI ani SPX nie udało mi się połączyć (kiedyś chciałem sprawdzić czy są jakieś różnice w wydajności no ale nie udało się)

Co do parametrów to najważniejsze też już były wymienione
user_name - nazwa użytkownika (domyślna SYSDBA)
password - jego haslo (domyślne MASTERKEY)
sql_role_name - rola - jeśli masz kilku użytkowników w bazie i poprzydzielane im role to tu podajesz jaką rolę ma przyjąć user po zalogowaniu do bazy (jeśli ma kilka to tak wybiera się "startową")
lc_ctype - zestaw znaków - dla nas najlepszy jest WIN1250

0

EXTRA! Dzięki za tą lekcje...

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