21 Mayıs 2013 Salı

iOS Eğitimi: iOS uygulamanızda InterBase ToGo kullanımı


Not: Bu örneği sorunsuz bir şekilde uygulayabilmeniz için IBToGo veya IBLite lisansına sahip olmanız gerekmektedir. RAD Studio XE4 Professional veya Delphi XE4 Professional Mobile ve üzeri bir sürüm satın aldıysanız IBLite için sınırsız geliştirme ve dağıtım lisansına sahipsinizdir. Deneme sürümü kullanıyorsanız ve InterBase'i iOS uygulamanızda test etmek istiyorsanız IBToGo test dağıtım lisansınızı  InterBase ToGo Deployment linkinden aktif etmeniz gerekmektedir.

BrowseDataOniOS.PNG 

Örneğimizde, Veritabanına Bağlanmak için dbExpress Kullanacağız

dbExpress Delphi'de yazılmış çok hızlı çalışan bir veritabanı erişim aracıdır. RAD Studio InterBase, Oracle, DB2, SQL Server, MySQL, Firebird, SQLite and ODBC gibi büyük veritabanları için gerekli driver'ları barındırmaktadır. Aşağıdaki prosedürlere benzer yöntemler kullanarak farklı veritabanlarına da erişebilirsiniz.
  • iOS platformu için, dbExpress InterBase ToGo ve SQLite'ı destekler. Bu iki veritabanını iOS cihazınızda çalıştırabilirsiniz.
  • Oracle gibi diğer veritabanları için, en az bir istemci kütüphanesi olması gerekir. Windows platformlarında, istemci kütüphanesine bağlanmak için DLL ler sunulmuştur ve bu dll lere ihtiyacınız vardır. Bu nedenle, iOS cihazları bu veritabanı ürünlerine bağlamak için DataSnap gibi orta katman teknolojileri kullanarak uygulamalar geliştirmek gerekir.

Kullanıcı Arayüzünü Oluşturalım

Örneğimizde UserInterface olarak TListBox nesnesini kullanacağız.
Şimdi sırasıyla aşağıdaki adımları izleyelim:
  1. HD FireMonkey Mobile Application oluşturmak için, File > New > FireMonkey Mobile Application - Delphi > Blank Application seçilir.
  2. Form'a TListBox nesnesi ekleyin.
  3. ListBox nesnemizin Object Inspector'dan aşağıdaki özelliklerini değiştirin:
    • Align özelliğini alClient seçin, bu seçim ile nesnemiz tüm ekranı kaplayacaktır.
    • DefaultItemStyles.ItemStyle özelliğini listboxitembottomdetail seçin.
  4. TListBox bileşenine sağ tıklayın ve Add Item seçeneğinden aşağıdaki nesneleri ekleyin:
    • TListBoxHeader 
    • TSearchBox 
    AddSearchBoxToListBox.png
  5. TListBoxHeader nesnesinin içine bir tane TLabel bileşeni ekleyin ve Object Inspector'dan aşağıdaki özelliklerin değerlerini yanlarında yazıldığı gibi değiştirin.
    • TLabel nesnesinin Align özelliğini alClient olarak,
    • StyleLookup özelliğini toollabel olarak,
    • TextAlign özelliğini taCenter olarak değiştirin.
    • Son olarak da Text özelliğine DB DEMO yazınız.

    Veriye Bağlanma


DbExpress kullanarak bir veritabanındaki verilere bağlanmak için temel adımları aşağıda verilmiştir:
  1. Tool Palette kısmından TSQLConnection bileşenini formunuza çıft tıklayarak ekleyiniz.
    SelectSqlConnection.png
  2. TSQLConnection nesnesinin ObjectInspector'dan özelliklerini aşağıdaki gibi değiştirin:
    1. Örneğimizde InterBase ToGo kullandık bu sebeple Driver özelliğini IBLite/ToGo seçiyoruz.
      SelectDriverForSQLConnection.png
    2. LoginPrompt özelliğini False seçiyoruz. Bu özellik sayesinde veritabanına bağlandığımızda bizden tekrar kullanıcı adı - şifre istemeyecektir.
    3. Params özelliğinin yanındaki üç noktaya tıklıyoruz [...] ardından Database değerini C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb (veritabanınızın lokasyonu) seçiyoruz; ve pencereyi kapatıyoruz:
      ConnectToInterBaseDBDENOS.png

    4. Connected özelliğini True seçiniz.
      Not: Geliştirme ortamı bir hata ("kullanılamaz veritabanı") alırsanız, bu sizin InterBase için geçerli bir lisans yok demektir.
  3. Forma bir TSQLDataSet bileşeni ekleyin ve aşağıdaki özellikleri ayarlayın::
    1. SQLConnection özelliğine SQLConnection1'i seçiyoruz (Bir önceki adımda oluşturduğumuz nesne).
    2. CommandText özelliğine SELECT COMMON_NAME, SPECIES_NAME FROM BIOLIFE ORDER BY COMMON_NAME  yazınız.
    3. Active özelliğine True yapınız.
  4. LiveBindings Designer'ı açalım ve aşağıdaki gibi veri ve kullanıcı arabirimi bağlayın:
    1. BindSourceDB1 içindeki COMMON_NAME tıklayın ve ListBox1 Item.Text üzerine sürükleyin.
      ConnectCommonNameToItemText.png

    2. BindSourceDB1 içindeki SPECIES_NAME tıklayın ve ListBox1 Item.Detail üzerine sürükleyin.
      LiveDataOnMobileFOrmDesigner.png

Uygulamanızı iOS'a Deploy Edin

Bu noktaya kadar, masaüstünüzde Interbase kullandık. Yani veritabanımız yerel diskimizin içinde bulunmaktadır. (C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb). iOS Cihazınızda, uygulamanız güvenlik sebebiyle filtre altındadır, yani sadece Documents klasörünün altındaki dosyalara erişip yazma ve okuma yetkisine sahip olursunuz..
iOS yerel bir veritabanına bağlanmak için, aşağıdaki eylemleri gerçekleştirmeniz gerekir:
  • iOS Cihazınıza deploy ederken veritabanınızı ekleyin.
  • Bağlantı parametrenizi (Veritabanı dosyanıza bağlanmak için) Documents klasörünüzün altındaki dosyayı seçerek değiştirin.

    InterBase ToGo, dbExpress Driver, ve Database Dosyasını iOS Cihazınlarına Dağıtın

IOS üzerinde örnek uygulamamızı çalıştırmak için, aşağıdaki dosyaları dağıtmak gerekir:
  • Interbase ToGo
  • InterBase için dbExpress Driver
  • Veritabanı dosyası (dbdemos.gdb)
  1. Deployment Manager'i açalım Project > Deployment.
  2. All-Configurations seçiniz - iOS Simulator platform Deployment Manager üstündeki hedef platformları açılan listeden hepsini seçin.
  3. Add Featured Files (DMgrAddFeatFiles.png) tıklayın:
    AddingFeaturedFiles.png

  4. Aşağıdaki veritabanı modüllerini seçin ve OK buttonuna tıklayarak Featured Files ekranını kapatın:
    • InterBase ToGo. Cihaz üzerine uygulamanızı dağıtırken InterBase lisans dosyanızı seçmeniz gerekir. Önerilen lisans dosya adları Featured Files dialog  penceresinde listelendiği gibidir, aşağıdaki resimde göreceğiniz gibi dosya deseni reg_*.txt şeklinde olmalıdır. Örneğimizde kullandığımız lisans dosyası reg_ibtogo.txt olduğu için listeden bu dosyayı seçiniz.
      Embarcadero'dan gelen ToGo veya IBLite lisans dosyanızı reg_nnnnnnn.txt şeklinde almış olabilirsiniz. nnnnnn üretilen bir sayıdır.:
      • reg_ibtogo.txt or reg_iblite.txt Lisans dosyanızı C:\Users\Public\Documents\InterBase\redist\InterBaseXE3 lokasyonuna kaydettiyseniz listeden sadece ilgili lisans dosyasını işaretlemeniz yeterli olacaktır.
      • Eğer orjinal adından farklı bir şekilde farklı bir yere kaydettiyseniz bir soraki aşamadan Add Files (bir sonraki resimde gözüktüğü gibi) tıklayarak lisans dosyanızı ekleyiniz.
    • DBExpress InterBase Driver
      SelectingFeaturedFiles.png

  5. Add Files kısmını tıklayınız ve veritabanı dosyanızı seçiniz (Örneğin : C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb).
    AddingDatabaseFile.png

  6. dbdemos.gdb dosyasını seçiniz ve Remote Path ayarını StartUp\Documents\ olarak değiştirin.
    ChangeToStartUpDocuments.png

  7. Platforms kolonundaki üç noktaya çift tıklayın (dbdemos.gdb satırı için):
    1. iOS Simulator and iOS Device için dbdemos.gdb seçili olduğundan emin olun.
    2. Win32 platformuna veritabanınızı kopyalamak istemiyorsanız listeden Win32'yi kaldırın..
  8. All-Configurations tıklayın - iOS Device platform için dbdemos.gdb dosyasının StartUp\Documents\ klasörünün altına oluşacağından emin olun.
Ayarladığınız gibi uygulamanızı yayınladığınızda veritabanı dosyanız izin verilen filtrelenmiş bölgeye yani Documents klasörünün altına oluşacaktır.

    Kodunuzu Lokal Veritabanı Dosyanıza Bağlanmak Üzere Değiştirin

Önceki adımda açıkladığım gibi, TSQLConnection bileşenini yerel dosya sistemindeki bir veritabanına bağlamıştık. Aşağıdaki gibi, veritabanına bağlanmadan önce dosyanın yerini değiştirmeniz gerekir:
  1. Form Designer'dan, SQLConnection1 bileşenini tıklayın.
  2. Object Inspector'dan BeforeConnect event'ına çift tıklayın.
  3. Aşağıdaki kodu BeforeConnect event'ına yazın:
procedure TForm1.SQLConnection1BeforeConnect(Sender: TObject);
begin
  {$IFDEF IOS}
    SQLConnection1.Params.Values['Database']
    := GetHomePath + PathDelim
       + 'Documents' + PathDelim + 'dbdemos.gdb';
  {$ENDIF}
end;
GetHomePath fonsyonu iOS uygulamanız için size gerçek home klasörünü verecektir. PathDelim constant'ı kullanmanız önerilmektedir. Çünkü PathDelim değişik platformlarda değişik karakterler döndürebilir ( \ veya /).

    Uygulamanızı iOS Simülatör veya iOS Cihazınız Üzerinde Çalıştırın

Artık uygulamamız çalışmaya hazır. Ayrıca SearchBox kullanarak listeyi daraltabilirsiniz:
BrowseDataOniOS.PNG NarrowDownListWithFish.png

    Karşılaşabileceğiniz Sorunlar


    InterBase Lisans Hataları

Eğer veritabanına bağlanmaya çalışırken ("unavailabale database") şeklinde bir hata alıyorsanız bu sizin geçerli bir InterBase lisansına sahip değilsiniz anlamına gelir.
  • InterBase Developer Edition için lisans bazı ürün sürümlerinde ürünün bir parçası olarak yer almaktadır.
  • Lisanslı bir RAD Studio kullanıyorsanız InterBase Developer Edition lisansınızı aktif etmek için Embarcadero Product License Manager (Başlat | Tüm Programlar | Embarcadero InterBase XE3) dosyasından aktif edebilirsiniz.

    Hata Yakalamak İçin

Uygulamanızı çalıştırdığınızda uygulamanız anlamsız bir şekilde çöküyorsa aşağıdaki adımları izleyin.
  1. SQLConnection1 bileşenini seçin ve Connected özelliğini False olarak değiştirin.
  2. Formunuza button ekleyin ve veritabanına aşağıdaki kod ile manuel olarak bağlanmayı deneyin:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    SQLConnection1.Connected := True;
    SQLDataSet1.Active := True;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;

    Tipik Hatalar Ve Çözümleri

Aşağıda karşılaşabileceğiniz tipik hatalar ve çözümleri yer almaktadır:
iOS Üzerinde Hata Öneri
GDBFileNotFound.PNG Veritabanı dosyasının (dbdemos.gdb) 'StartUp\Documents\' klasörünün altına ulaşıp ulaşmadığını kontrol edin.
IBToGoLic.PNG InterBase ToGo lisans dosyanızın oluşup oluşmadığını kontrol edin.
NeedToPointLocalFile.PNG Bağlantı konfigürasyonunuz yerel (Startup) klasörde değil.

1 yorum:

  1. tesekkurler...
    iblite guzel ama malesef veritabani sifrelemeyi desteklemiyor. sifrelenebilir bir veritabani icin ib togo kullanmak gerekiyor.

    YanıtlaSil