SQLite Tabloya Alan Ekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Firarist
Üye
Mesajlar: 129
Kayıt: 13 Eki 2003 06:41
Konum: Antalya
İletişim:

SQLite Tabloya Alan Ekleme

Mesaj gönderen Firarist »

Var olan SQLite tabloya bir alan eklemek istiyorum. FormCreate alanın şu kodları yazıyorum.

Kod: Tümünü seç

begin
  If Qogrenci.FieldList.IndexOf('KanGrubu') < 0 then
  begin
    Qogrenci.Close;
    Qogrenci.SQL.Clear;
    Qogrenci.SQL.Add('ALTER TABLE Ogrenci ADD KanGrubu varchar2(5)');
    Qogrenci.Open;
    Qogrenci.ExecSQL;
  end
else
  SHOWMESSAGE('Alan zaten mevcut');
Bu satırı eklediğimde dublicate column hatası veriyor. Nerede hata yaptığımı ve ne yapmam gerektiğini anlayamadım. (Acemi)

Resim
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: SQLite Tabloya Alan Ekleme

Mesaj gönderen ertank »

Merhaba, Hata çok açık. Ogrenci tablosu içinde zaten KanGrubu kolonu mevcut.
Mükerrer kolon adı eklemeye çalışıyorsunuz. Hatanız bu.
Firarist
Üye
Mesajlar: 129
Kayıt: 13 Eki 2003 06:41
Konum: Antalya
İletişim:

Re: SQLite Tabloya Alan Ekleme

Mesaj gönderen Firarist »

Hocam cevap için teşekkürler.

İşte ben de bunu yapamadım.

Tablo oluşturuluyor bunda bir sorun yok. Ben de istiyorum ki programı yeniden çalıştırdığımda bir kez daha alan oluşturmaya çalışmasın "Alan zaten mevcut" mesajı versin.
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: SQLite Tabloya Alan Ekleme

Mesaj gönderen ertank »

Tablo kolon bilgilerini okuyun. İçinde istediğiniz kolon var ise kolon ekleme kodunu çalıştırmayın.
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: SQLite Tabloya Alan Ekleme

Mesaj gönderen loaded »

Postgresql'de şöyle bir uygulama var buradaki esas ifade EXISTS ;

Kod: Tümünü seç

SELECT EXISTS (
    SELECT FROM 
        pg_tables
    WHERE 
        schemaname = 'public' AND 
        tablename  = 'Tablo_Adı'
    );
Uygulama tarafında ise şu şekilde kullanımı mevcut ;

Kod: Tümünü seç

  ZQuery1.Active:=false;
  ZQuery1.SQL.Text:=memo1.Text; // Yukarıdaki Sql Tümcesi
  ZQuery1.Active:=true;
  if ZQuery1.Fields[0].AsBoolean then showmessage('Tablo Var') else showmessage('Tablo Yok');
Kodlar Lazarus'ta yazılıp denenmiştir.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: SQLite Tabloya Alan Ekleme

Mesaj gönderen ertank »

Firarist yazdı: 02 Eyl 2022 01:45 Hocam cevap için teşekkürler.

İşte ben de bunu yapamadım.

Tablo oluşturuluyor bunda bir sorun yok. Ben de istiyorum ki programı yeniden çalıştırdığımda bir kez daha alan oluşturmaya çalışmasın "Alan zaten mevcut" mesajı versin.
FireDAC özelliklerinden faydalanabilirsiniz. Ancak şahsen veritabanı detay işlemlerinden kullanıcıyı haberdar etmeye gerek yok diye düşünüyorum.

Kod: Tümünü seç

var
  List: TStringList;
begin
  List := TStringList.Create();
  try
    FDConnection1.GetFieldNames(EmptyStr, EmptyStr, 'Ogrenci', 'KanGrubu', List);
    if List.Count = 0 then
    begin
      // Kolon yok. Eklenmesi gerekli
      Qogrenci.Close;
      Qogrenci.SQL.Clear;
      Qogrenci.SQL.Add('ALTER TABLE Ogrenci ADD KanGrubu varchar2(5)');
      Qogrenci.Open;
      Qogrenci.ExecSQL;
    end;
  finally
    List.Free();
  end;
Kod test edilmedi. GetFieldNames() parametrelerinden ilk ikisinde düzenleme yapmanız gerekebilir.
Firarist
Üye
Mesajlar: 129
Kayıt: 13 Eki 2003 06:41
Konum: Antalya
İletişim:

Re: SQLite Tabloya Alan Ekleme

Mesaj gönderen Firarist »

Çok teşekkürler ilginiz için arkadaşlar. Ne kadar teşekkür etsem azdır çok uğraştırmıştı bu durum beni. Tam istediğim buydu işte. @ertank hocamın kodları sorunsuz şekilde çalıştırdım.
Cevapla