Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Veritabanı adlarını listeleme
#1
Merhaba,

Nette iki faklı örnek buldum ama yapamadım. FDConnection ile bağlandığım databaselerin listesini nasıl alabilirim? 

procedure TFormMain.Button1Click(Sender: TObject);
var
  lString: TStrings;
  i: Integer;
Begin
  lString := TStringList.Create;
  FDConnection1.GetTableNames(lString, True);
  for i := 0 to lString.Count - 1 do
  begin
    ComboBox1.Items.Add(lString.Strings[i]);
  End;




procedure TFormMain.Button1Click(Sender: TObject);
var
  list: TStringList;
  i: Integer;
begin
  list := TStringList.Create;
  FDConnection1.GetTableNames('*.*', True, list);
  for i := 0 to list.Count - 1 do
    ComboBox1.Items.Add(list.Text);
  list.Free
end;
Cevapla
#2
Mssql
SELECT name FROM master.dbo.sysdatabases

MySQL
SHOW DATABASES

Postgresql
information_schema içine bakın
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
(25-09-2020, Saat: 20:26)Nese Adlı Kullanıcıdan Alıntı: Merhaba,

Nette iki faklı örnek buldum ama yapamadım. FDConnection ile bağlandığım databaselerin listesini nasıl alabilirim? 

procedure TFormMain.Button1Click(Sender: TObject);
var
  lString: TStrings;
  i: Integer;
Begin
  lString := TStringList.Create;
  FDConnection1.GetTableNames(lString, True);
  for i := 0 to lString.Count - 1 do
  begin
    ComboBox1.Items.Add(lString.Strings[i]);
  End;




procedure TFormMain.Button1Click(Sender: TObject);
var
  list: TStringList;
  i: Integer;
begin
  list := TStringList.Create;
  FDConnection1.GetTableNames('*.*', True, list);
  for i := 0 to list.Count - 1 do
    ComboBox1.Items.Add(list.Text);
  list.Free
end;


Sizin yazdığınız komutlar tablo isimlerini listeliyor gibi.

Ayrıca oracle için aşağıdaki kodu kullanabilirsiniz.
select * from v$database;
Cevap dönerse fonksiyondur, dönmezse prosedür. Hata dönerse hiç senin olmamıştır. 
Cevapla
#4
Merhaba 

EXEC sp_databases

veya

SELECT name FROM master.sys.databases


sorglarınından donen listeyi comboboxa aktarabılırsınız
Cevapla
#5
uses
 System.IOUtils;

procedure TForm1.btnListeleClick(Sender: TObject);
var
 DataDirectory: string;
 DBFiles: TArray<string>;
 I: Integer;
begin
 lstDBFiles.Clear();

 DataDirectory := TPath.Combine(TPath.GetLibraryPath(), 'data');
 if not TDirectory.Exists(DataDirectory) then Exit();

 DBFiles := TDirectory.GetFiles(DataDirectory, '*.fdb', TSearchOption.soTopDirectoryOnly);
 for I := Low(DBFiles) to High(DBFiles) do
   lstDBFiles.Items.Add(TPath.GetFileName(DBFiles[I]));
end;

Kendi kullanmış olduğum bir kod var işinize yarar diye paylaşıyorum. Data uzantısını kendi data dosyası uzantınıza göre uyarlarsınız birde data yazan kısıma datanız hangi klasördeyse o klasörün adını yazınız. Uses kısmına System.IOUtils kütüphanesini eklemeyi unutmayın.
Cevapla
#6
(28-09-2020, Saat: 23:10)bnyamin86 Adlı Kullanıcıdan Alıntı:
uses
 System.IOUtils;

procedure TForm1.btnListeleClick(Sender: TObject);
var
 DataDirectory: string;
 DBFiles: TArray<string>;
 I: Integer;
begin
 lstDBFiles.Clear();

 DataDirectory := TPath.Combine(TPath.GetLibraryPath(), 'data');
 if not TDirectory.Exists(DataDirectory) then Exit();

 DBFiles := TDirectory.GetFiles(DataDirectory, '*.fdb', TSearchOption.soTopDirectoryOnly);
 for I := Low(DBFiles) to High(DBFiles) do
   lstDBFiles.Items.Add(TPath.GetFileName(DBFiles[I]));
end;

Kendi kullanmış olduğum bir kod var işinize yarar diye paylaşıyorum. Data uzantısını kendi data dosyası uzantınıza göre uyarlarsınız birde data yazan kısıma datanız hangi klasördeyse o klasörün adını yazınız. Uses kısmına System.IOUtils kütüphanesini eklemeyi unutmayın.

Kodunuz dosya filtreleme mantigi ile calisiyor ise yarayacagi durumlar var , yaramayacagi durumlarda var. Şöyleki mssql kullaniyorsa deattch olan veritabanlari fiziksel olarak mevcut olur fakat serverda faal olmazlar listelenmezler. Aslinda kullanici hangi durum isine yariyor ona karar vermeli
Cevapla
#7
Cevaplar için teşekkür ederim.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Veritabanı Video kaplanalpay0 2 1.334 06-09-2020, Saat: 12:35
Son Yorum: kaplanalpay0
  Bilgisayara bağlı olan tüm webcamleri imageye listeleme ekank 14 6.854 06-06-2020, Saat: 16:23
Son Yorum: gbg
  Mobil Uygulama hostingde bulunan mysql veritabanı baglantısı. Yardım! 333hiram 2 2.159 31-03-2020, Saat: 17:53
Son Yorum: 333hiram
  styleden text adlarını alma YasinDalli 6 4.100 07-09-2018, Saat: 11:59
Son Yorum: YasinDalli
Question SQLİTE veritabanı oluşturma ? Mr.Developer 10 9.171 21-05-2018, Saat: 16:50
Son Yorum: Mr.Developer



Konuyu Okuyanlar: 1 Ziyaretçi