Selamın Aleyküm,
ODBC ile veri tabanı ilişkilendiriyorum, ancak birden fazla veri tabanı var iken benim seçtiğim Veritabanının listelenmesini nasıl sağlarım,
işin özünde ODBC deki bilgilerin nereden ve nasıl alınacağını bilmiyorum
Şimdiden teşekkürler
ComboBox ile Serverleri Veritabanlarını Listeleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: ComboBox ile Serverleri Veritabanlarını Listeleme
Hangi veritabanı? Mesela sql server isesorgusu ile veritabanları listelenebilir.
Kod: Tümünü seç
select * from master..sysdatabases
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: ComboBox ile Serverleri Veritabanlarını Listeleme
teşekkürler hocam, ancak sadece Yönetimsel Araçlar/ ODBC Veri Kaynaklarında tanımladığım veri tabanlarının listelenmesi nasıl yapılabilir, bunu yapamadım,
ilginiz için teşekkürler,
Saygılarımla,
ilginiz için teşekkürler,
Saygılarımla,
Re: ComboBox ile Serverleri Veritabanlarını Listeleme
ODBC (Open Database Connectivity) demektir. ODBC bir veritabanı değil veritabanı bağlantı aracı diyebiliriz. Kullandığınız veritabanı , access , paradox, interbase, firebird vs olabilir. Bu yüzden sorunuzu daha açık sorabilirseniz daha hızlı cevap bulursunuz.
Re: ComboBox ile Serverleri Veritabanlarını Listeleme
Merhaba,
SQL SERVER da örneğin deneme ve denemeyedek adında 2 tane veri tabanım var, bu veri tabanlarını ben ODBC ile servere bağladım, kullanıcı işlem yapacağı veri tabanını combobox ile seçecek,
not olarak odbc ile bağlı olmayan veri tabanlarımız da var , onların görünmemesi gerekiyor, bu sebeple ODBC ye tanımlı VT lerin seçilmesi durumunun nasıl ilerlendiğini bilemediğim için ilerleyemedim, umarım açıklayıcı olmuştur.
saygılarımla,
SQL SERVER da örneğin deneme ve denemeyedek adında 2 tane veri tabanım var, bu veri tabanlarını ben ODBC ile servere bağladım, kullanıcı işlem yapacağı veri tabanını combobox ile seçecek,
not olarak odbc ile bağlı olmayan veri tabanlarımız da var , onların görünmemesi gerekiyor, bu sebeple ODBC ye tanımlı VT lerin seçilmesi durumunun nasıl ilerlendiğini bilemediğim için ilerleyemedim, umarım açıklayıcı olmuştur.
saygılarımla,
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: ComboBox ile Serverleri Veritabanlarını Listeleme
Veritabanları sql server a kayıt edildikleri zaman hangi ortamdan kayda geçtiğinin bir önemi yoktur sonuçta her veritabanı SQLServer master veritabanına eklenirler. Yalnız burada bazı veritabanları için ODBC bağlantı tanımları yapıldı ise sadece bu tanımlara ulaşmak istiyorsanız odbc veri kaynakları ile alakalı apilere hakim olup onlar üzerinden çalışmanız gerekmektedir. Mesela sistemde tanımlı odbc tanımlarının listesini alıp ona bağlanarak tablo listesini çeken bir örnek:odbc tanmı yaparak bağlantı SQL Server Provider veya Native Client ile yapılan bağlantılara göre daha zahmetli, dolaylı, eski ve bazı eklentilere bağımlı çalışan bir yöntemdir. Mecbur kalmadıkça tercih etmemekte pratiklik açısından fayda vardır aslında.
Kod: Tümünü seç
const
SQL_ERROR = -1;
SQL_SUCCESS = 0;
SQL_FETCH_NEXT = 1;
SQL_FETCH_FIRST = 2;
odbc32 = 'ODBC32.DLL';
function SQLAllocEnv(var phenv: Pointer): smallint; stdcall; external odbc32;
function SQLAllocConnect(henv: Pointer; var phdbc: Pointer): smallint; stdcall; external odbc32;
function SQLDataSources(henv: Pointer; direction: word; szDSN: Pchar; cbDSN:
word; var pbDSN: word; szDescr: Pchar; cbDescr: word; var pbDescr: word):
smallint; stdcall; external odbc32;
procedure GetDataSources(var DSList: TStringList);
var
dsn, descr: array[0..255] of char;
henv, hdbc: Pointer;
cbdsn, cbdescr: word;
begin
DSList.clear;
if (SQLAllocEnv(henv) <> SQL_SUCCESS) then
raise EODBCError.Create('Cannot allocate ODBC handle');
if (SQLAllocConnect(henv, hdbc) <> SQL_SUCCESS) then
raise EODBCError.Create('Cannot allocate ODBC connection');
if SQLDataSources(henv, SQL_FETCH_FIRST, dsn, sizeof(dsn), cbdsn, descr,
sizeof(descr), cbdescr) = SQL_SUCCESS then
DSList.add(strpas(dsn))
else
exit;
while SQLDataSources(henv, SQL_FETCH_NEXT, dsn, sizeof(dsn), cbdsn, descr,
sizeof(descr), cbdescr) = SQL_SUCCESS do
DSList.add(strpas(dsn));
end;
procedure GetDataSources(const DSList: TStrings);
var
dsn, descr: array[0..255] of char;
henv, hdbc: Pointer;
cbdsn, cbdescr: word;
begin
DSList.clear;
if (SQLAllocEnv(henv) <> SQL_SUCCESS) then
raise EODBCError.Create('Cannot allocate ODBC handle');
if (SQLAllocConnect(henv, hdbc) <> SQL_SUCCESS) then
raise EODBCError.Create('Cannot allocate ODBC connection');
if SQLDataSources(henv, SQL_FETCH_FIRST, dsn, sizeof(dsn), cbdsn, descr,
sizeof(descr), cbdescr) = SQL_SUCCESS then
DSList.add(strpas(dsn))
else
exit;
while SQLDataSources(henv, SQL_FETCH_NEXT, dsn, sizeof(dsn), cbdsn, descr,
sizeof(descr), cbdescr) = SQL_SUCCESS do
DSList.add(strpas(dsn));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetDataSources(ComboBox1.Items);
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
ADOConnection1.ConnectionString :=
'Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + ComboBox1.Items
[Combobox1.ItemIndex];
ADOConnection1.GetTableNames(ListBox1.Items);
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .