İşiniz bittiğinde Delphi veritabanı çözümü, son adım kullanıcının bilgisayarını başarıyla dağıtmaktır.
Anında Bağlantı
DbGo (ADO) bileşenlerini kullanıyorsanız,Bağlantı dizisi mülkü TADOConnection veri deposu için bağlantı bilgilerini belirtir.
Açıkçası, çeşitli makinelerde çalıştırılacak veritabanı uygulamaları oluştururken, veri kaynağına bağlantı yürütülebilir dosyada sabit olarak kodlanmamalıdır. Başka bir deyişle, veritabanı kullanıcının bilgisayarında (veya başka bir yerde) bulunabilir (ağdaki bilgisayar) - TADOConnection nesnesinde kullanılan bağlantı dizesi, Çalışma süresi. Bağlantı dizesi parametrelerini saklamak için önerilen yerlerden biri Windows Kayıt Defteri (veya "düz" ü kullanmaya karar verebilirsiniz INI dosyaları).
Genel olarak, çalışma zamanında bağlantı dizesi oluşturmak için
a) Veritabanının Tam Yolunu Kayıt Defterine yerleştirin; ve
b) başvurunuzu her başlattığınızda, Kayıt Defterindeki bilgileri okuyun, ConnectionString'i "oluşturun" ve ADOConnection'ı "açın".
Veri tabanı... Bağlan!
Süreci anlamanıza yardımcı olmak için, bir form (uygulamanın ana formu) ve bir veri modülünden oluşan örnek bir "iskelet" uygulaması oluşturduk. Delphi'nin Veri Modülleri, uygulamanızın veritabanı bağlantısı ve iş kurallarını işleyen kısımlarını izole etmek için kullanılan kullanışlı bir organizasyon aracı sağlar.
OnCreate Data Module olayı, ConnectionString'i dinamik olarak oluşturmak ve veritabanına bağlanmak için kodu yerleştirdiğiniz yerdir.
prosedür TDM.DataModuleCreate (Gönderen: TObject); başlaEğer DBConnect sonra ShowMessage ('Veritabanına Bağlı!') Başka ShowMessage ('Veritabanına bağlı DEĞİL!'); son;
Not: Veri Modülünün adı "DM" dir. TADOConnection bileşeninin adı "AdoConn" dur.
DBConnect işlevi veritabanına bağlanma gerçek iş yapar, İşte kod:
fonkTDM.DBConnect: boolean; var conStr: string; SunucuAdı, DBName: string; başlaServerName: = ReadRegistry ('Veri Kaynağı'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Sağlayıcı = sqloledb;' + 'Veri Kaynağı =' + SunucuAdı + ';' + 'Başlangıç Kataloğu =' + DBName + ';' + 'Kullanıcı Kimliği = myUser; Şifre 'myPasword =; Sonuç: = yanlış; AdoConn. Kapat; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = Yanlış;Eğer (DEĞİL AdoConn. Bağlı) sonraDeneyin AdoConn. Açık; Sonuç: = True; dışındaüzerinde E: İstisna yapmakbaşlaMessageDlg ('adresine bağlanırken bir hata oluştu. veritabanı. Hata: '+ # 13 # 10 + e. Mesaj, mtError, [mbOk], 0);EğerDEĞİL TDatabasePromptForm. Yürüt (ServerName, DBName) sonra Sonuç: = yanlış. Başkabaşla WriteRegistry ('DataSource', SunucuAdı); WriteRegistry ('DataCatalog', DBName); // bu işlevi hatırla Sonuç: = DBConnect; son; son; son; son; //DBConnect
DBConnect işlevi MS SQL Server veritabanına bağlanır - ConnectionString, yerel connStr değişken.
Veritabanı sunucusunun adı, Sunucu adı değişken, veritabanının adı dBName değişken. İşlev, bu iki değeri kayıt defterinden okuyarak başlar (özel ReadRegistry () prosedür). ConnectionString birleştirildikten sonra, AdoConn. Açık yöntem. Bu çağrı "true" değerini döndürürse, veritabanına başarıyla bağlandık.
Not: Giriş bilgilerini ConnectionString üzerinden açıkça geçirdiğimiz için, Veri modülü ana formdan önce oluşturulduktan sonra, yöntemleri MainForm'un OnCreate'indeki veri modülünden güvenle çağırabilirsiniz Etkinlik.LoginPrompt özelliği, gereksiz bir oturum açma iletişim kutusunu önlemek için false olarak ayarlanır.
Bir istisna oluşursa "eğlence" başlar. Open yönteminin başarısız olmasının birçok nedeni olsa da, sunucu adının veya veritabanı adının kötü olduğunu varsayalım.
Bu durumda, kullanıcıya özel bir iletişim formu görüntüleyerek doğru parametreleri belirleme şansı vereceğiz.
Örnek uygulama ayrıca, kullanıcının Bağlantı bileşeni için sunucuyu ve veritabanı adını belirtmesini sağlayan bir ek form (DatabasePromptForm) içerir. Bu basit form yalnızca iki düzenleme kutusu sağlar, daha kullanıcı dostu bir arayüz sağlamak istiyorsanız, iki ComboBox ekleyin ve mevcut SQL Server'ları numaralandırarak ve SQL Server'da veritabanlarını alarak bunları doldurun.
DatabasePrompt formu özel bir sınıf yöntemi adlandırılmış İki değişken (var) parametresini kabul eden Execute: SunucuAdı ve DBAdı.
Bir kullanıcı (sunucu ve veritabanı adı) tarafından sağlanan "yeni" verilerle, DBConnect () işlevini yeniden çağırırız (yinelemeli olarak). Tabii ki, bilgiler ilk olarak Kayıt Defterinde saklanır (başka bir özel yöntem kullanılarak: WriteRegistry).
Emin olun DataModule oluşturulan ilk "Form"!
Bu basit projeyi kendi başınıza oluşturmaya çalışırsanız, uygulamayı çalıştırdığınızda Erişim İhlali istisnaları yaşıyor olabilirsiniz.
Varsayılan olarak, uygulamaya eklenen ilk form MainForm (ilk oluşturulan form) olur. Uygulamaya bir veri modülü eklediğinizde, veri modülü ana formdan sonra oluşturulan form olarak "formları otomatik oluştur" listesine eklenir.
Artık, MainForm'un OnCreate olayında Veri Modülünün özelliklerinden veya yöntemlerinden herhangi birini çağırmayı denerseniz, veri modülü henüz oluşturulmadığı için bir Erişim İhlali istisnası alırsınız.
Bu sorunu çözmek için, veri modülünün oluşturulan sırasını manuel olarak değiştirmeniz ve uygulama tarafından oluşturulan ilk form (Proje Özellikleri iletişim kutusunu kullanarak veya düzenleyerek Projeler kaynak dosyası).
Veri modülü ana formdan önce oluşturulduğundan, yöntemleri MainForm'un OnCreate olayındaki veri modülünden güvenle çağırabilirsiniz.