您現在的位置:首頁 >> 其它平臺 >> Andriod >> 內容

Android開發數據庫三層應用-DataSnap

時間:2013/10/24 13:41:54 點擊:

  核心提示:我覺得Delphi最強大的的功能之一就是開發數據庫三層應用的DataSnap,在Android上的實現,首先是完成服務器的設計:(1)利用向導完成DataSnap服務器的框架,如下圖:由于是實驗,所以選擇VCL程序,如果是實際應用,建議Service程序我習慣使用TCP/IP作為通訊協議,簡單且速度...

我覺得Delphi最強大的的功能之一就是開發數據庫三層應用的DataSnap,在Android上的實現,首先是完成服務器的設計:

1)利用向導完成DataSnap服務器的框架,如下圖:

 

image

由于是實驗,所以選擇VCL程序,如果是實際應用,建議Service程序

 

image

我習慣使用TCP/IP作為通訊協議,簡單且速度快,Sample Methods是演示和測試用

 

image

缺省211端口

 

image

使用TDSServerModule作為數據服務提供主體,非常方便變更為Service應用服務

 

image

 

 

2)設置服務器數據

 

TDSServerModule中設置數據,為簡便起見,采用BDE引擎的DBDEMOSanimals.dbf數據庫,有文字也有圖片,如下圖:

 

image

放置一個TDataSetProvider連接該數據源,如下圖:

 

image

服務器至此設計完成,沒有編寫一行代碼,只是調整了部分控件和窗體的名稱。手動啟動該應用服務程序。

 

3)新建Android客戶端程序

 

新建一個android客戶端程序,在工程中增加一個TDataModule模塊,用于放置與應用服務器的連接和數據,在模塊窗體上放置TSQLConnectionTDSPProviderConnectionTClientDataSet三個控件,如下圖:

 

image

其中TSQLConnection的屬性設置中LoginPrompt要設為FalseTDSPProviderConnection的屬性設置如下:

 

image

其中ServerClassName是指應用服務器上作為數據服務提供主體的TDSServerModule的實例類名稱,在這里我習慣性地重新命名了,缺省一般是TServerMethods1TClientDataSet的設置如下圖:

 

image

為實現應用服務器上Sample Methods在客戶端的調用,需要創建服務類在客戶端的實現類,右鍵點擊TSQLConnection選擇生成,如下圖:

 

image

新生成的類定義如下:

 

image

 

 

以上過程完全同Windows下的DataSnap客戶端開發。

 

 

 

4Android界面顯示數據

 

Android下對數據的顯示,與Windows下開發最大的區別是,無法使用TDBEdit一類的數據感應控件,取而代之的是標準控件,通過LiveBindings技術實現數據感應。要實現該過程,首先是在窗體上放置用于數據展示的標準控件,這里采用了TListBoxTGrid,通過TTabControl分開,如下圖:

 

image

IPPort輸入框是為了更靈活地連接服務器,下面的按鈕OnClick事件代碼如下:

 

procedure TfrmMain.Button1Click(Sender: TObject);

var

  dm : TdmServerMethodsClient;

begin

  try

 

    //連接指定IPPort的應用服務器

    dmMain.SQLConn.Close;

    dmMain.SQLConn.Params.Values['HostName'] := edtIP.Text;

    dmMain.SQLConn.Params.Values['Port'] := edtPort.Text;

    try

      dmMain.SQLConn.Open;

      try

 

       //創建應用服務器上的Sample Methods在客戶端的實現類

        dm := TdmServerMethodsClient.Create(dmMain.SQLConn.DBXConnection);

 

      //執行服務器上的方法

        ShowMessage(dm.ReverseString(edtIP.Text));

      finally

        dm.Free;

      end;

 

      //開啟客戶端數據集

      dmMain.cdsanimals.Close;

      dmMain.cdsanimals.Open;

    except

      on E: Exception do

        ShowMessage(E.Message);

    end;

  finally

    dmMain.SQLConn.Close;

  end;

end;

 

客戶端界面與數據集之間采用LiveBindings方式,最好是打開LiveBindings設計頁面,如下圖:

 

image

image

 

 

由于TListBox只能顯示一個字段數據,所以用另外一個窗體單獨顯示某條記錄的詳細信息,如下圖:

 

image

啟動并運行,點擊按鈕執行服務器函數后界面如下圖:

 

image

TGrid展示數據如下圖:

 

image

TlistBox展示數據如下圖:

 

image

點擊某條記錄后,顯示明細窗體,如下圖:

 

image

 

 

結論:

 

1Android下開發DataSnap客戶端,對數據的處理和服務函數調用與Windows下一致;

 

2Android客戶端展示不能使用數據感應控件,只能使用標準控件,通過LiveBindings技術來實現數據關聯;

 

3Windows下使用TClientDataSet需要用到Midas.dll,在Android下這個問題不存在了,也不需要單獨部署Midas支持的相關文件,但是看材料iOS下好像還要部署,沒試過。

作者:zhengganghua 錄入:zhengganghua 來源:轉載
共有評論 9相關評論
發表我的評論
  • 大名:
  • 內容:
  • 盒子文章(www.srtxuk.icu) © 2019 版權所有 All Rights Reserved.
  • 滬ICP備05001939號
  • 快乐10分助手官网