Öncelikle bu yazıyı yazmamın en önemli sebebinden bahsetmek istiyorum. Geçenlerde yazmış olduğum bir programın veritabanını değiştirmek zorunda kaldım. Veritabanı seçimi yaparken en uygun ve kullanışlı olarak Firebird'te karar kıldım. Fakat küçük bir problem vardı çünkü hiç bir yerde gömülü Firebird veritabanı bağlantısı hakkında açıklayıcı bir bilgi yoktu. Bu nedenle Firebird kullanmak isteyen ve bağlantı hakkında bilgi arayışında olanlar benim gibi saatlerini hatta günlerini harcamasın diye böyle bir bilgi paylaşımına karar verdim.
İlk olarak ekteki sıkıştırılmış dosyayı projemizin debug klasörünün içine çıkartalım. Bunlar bağlantının çalışabilmesi için gerekli olan dll dosyalarıdır. Veritabanının aynı klasörün içinde olduğunda emin olun. Daha sonra projemizin referans kısmından FirebirdSql.Data.FirebirdClient.dll dosyasını referans olarak ekleyelim(bu dosya debug klasöründe mevcut). Daha sonra formun üst kısmına using FirebirdSql.Data.FirebirdClient; yazarak projemize dahil ediyoruz. Sıra geldi bağlantı kodumuzu yazmaya.
FbConnection baglanti = new FbConnection("ServerType=1;User=SYSDBA;Password=;Dialect=3;Database=veritabanı.fdb");
Şimdi nedir bu kod kısaca açıklayalım. Değişkeni açıklamaya gerek yok çünkü bu aşamadaki bir kişi ne olduğunu zaten biliyordur. Bağlantı türünü ServerType=1 olarak tanımladık. Buradaki 1 veritabanının gömülü olduğu anlamına gelir. Eğer biz bunu 0 yazsaydık gömülü veritabanı bağlantısı değilde Firebird server üzerinden çalışan bir veritabanı olduğunu belirtmiş olurduk. User=SYSDBA; Firebird veritabanı oluştururken çoğu veritabanı yöneticilerinin kullanmış olduğu genel kullanıcı adıdır. Bunu değiştirebilirsiniz fakat gömülü veritabanında kullanıcı adı ve şifre ile oynadığınızda bağlantı sırasında hata alma ihtimaliniz oldukça yüksek çünkü gömülü veritabanı oluştururken veritabanı yöneticileri şifre belirlemenize izin vermiyor. Bu nedenle kullanıcı adına hiç dokunmamak ve şifre kısmını boş bırakmak en iyisi. Bu güvenlik açısından büyük bir sorun fakat ben gömülü veritabanında şifre kullanımıyla ilgili şimdiye kadar hiçbir bilgiye rastlamadım. Bilgisi olanlar varsa benide bilgilendirirse sevinirim. Son bir hatırlatma yapayım. Eğer dll dosyalarının bir tanesi bile debug klasörünün içinde olmassa bağlantı kurulamaz. Bu nedenle projenizi setup haline getirirken bu dll dosyalarını dahil etmeyi unutmayın. Şimdilik bu kadar. Kolay gelsin.
Veritabanını kod ile oluşturmak isteyenler için gerekli olan kod:
FbConnection.CreateDatabase("ServerType=1; User=SYSDBA; Password=; Dialect=3; Database=veritabanı.fdb");
Not: Ekte 32 bit ve 64 bit işlemciler için ayrı dosyalar mevcut. Kendi işlemcinize göre doğru olan dosyayı indiriniz.
32 bit işlemciler için buradan indirebilirsiniz.
64 bit işlemciler için buradan indirebilirsiniz.
Kardeşim her ne kadar C# ve benzeri teknolojileri ile ilgilenmesem de, Anlattığın kadarıyla dökümantasyon eksiği olan bir konuda yazdığın için teşekkürler :)
YanıtlaSilmakaleniz için teşekkürler yazılarınızın devamını bekliyoruz.
YanıtlaSilBu makalede annattıklartınızı harfiyen yapmama rağmen
DLL 'fbembed' yüklenemedi: Belirtilen modül bulunamadı. (HRESULT özel durum döndürdü: 0x8007007E)
hatası alıyorum çözüm bulamadım. yardımlarınızı bekliyorum.
mge@hotmail.com.tr
fbembed.dll dosyasını mailinize gönderdim. orada belirtmiş olduğum adımları takip ederek tekrar deneyin. eğer çözemezseniz yardımcı olmaya çalışırım.
YanıtlaSilSezgin bey DLL 'fbembed' yüklenemedi: Belirtilen modül bulunamadı. (HRESULT özel durum döndürdü: 0x8007007E) hatasını bende alıyorum.Yanlız işlemcim 64 bit ben 32 bit olarak yapıcam projeyi.Target Platformu x86 olarak ayarlamama rağmen çalışmadı.
YanıtlaSilaliyildirim@tktuzla.com yardım edermisiniz.
fbembed.dll dosyasının 32 bitlik işletim sistemleri için olduğundan emin olun. 64 bitlik bir pc ile geliştirirken 32 bitler için olan dll dosyasını kullanımı sırasında hata alırsanız 64 bit dll ile geliştirin fakat setup haline getirirken 32 bitlik dll dosyasını gömün. 32 bitlik bilgisayarlarda kullanırken sorun çıkartmaz. Umarım açıklayıcı olmuştur. Kolay gelsin.
YanıtlaSilSezgin bey, size facebook hesabınızdan bu konu ile ilgili bir mesaj attım. Kontrol ederseniz çok sevirinim.
SilSaygılarımla,
Özgür.
S.A. Üstad,
YanıtlaSilBen şu anda projemi MySQL ile geliştirdim fakat Firebird üzerine geçmeye karar verdim.
Yalnız aklıma takılan 1-2 konu var.
Şu anki yapımda kullandığım database querylerinde ki SELEECT, INSERT, DELETE, UPDATE komutlarımda değişiklik gerekiyor mu acaba?
Bu konuda yardımcı olabilir misiniz?
Başarılar
Aleykum selam. Veritabanı bağlantı kodunu değiştirmen yeterli olacaktır. Diğerleri aynı kalabilir..
SilTeşekkürler, bu arada linkler ölmüş. Bir türlü stabil, tüm gereksinimleri içerisinde bir provider bulamadım.
YanıtlaSil