XE5 ANDROID經過webservice訪問操做MSSQL數據庫

服務端須要midas.dll  html

     XE5對android的平臺支持頗有吸引力,雖然目前用來直接開發應用到安卓市場賣賺錢可能性估計不大(安卓市場目前國內好像都是免費的天下),可是對於企業應用非常頗有幫助的,好比開發一個手機客戶端隨時查詢企業erp等管理軟件的數據庫!
   webservice之前基本沒有接觸,惡補了幾天,服務端用ro開發比較快捷(ro下載請本身baidu)android

一,服務端開發:web

     1,打開delphi xe(服務端我用的是xe開發的,由於目前尚未出支持xe5的ro)sql

      新建工程---RO sdk--vcl standalone--創建成功數據庫

     2,工程打開後,在ide的菜單ro中選擇edit serverice library瀏覽器

     3,打開ServerForm,刪除上面的2個控件,並添加TROIpHTTPServer(屬性中能夠設置端口), TROSOAPMessage 2個控件,設置TROIpHTTPServer的  dispatchers屬性,綁定TROSOAPMessage網絡

     4,默認已經添加了了哇library 和newservice,咱們一切按默認,用的是默認的一個函數sum,2個數求和ide

     5,打開NewService_Impl,實現sum的具體代碼:Result:=a+b;函數

      6,運行服務端post

    打開瀏覽器測試:http://127.0.0.1:8099/soap

   8099是我步驟3中設置的端口號,應該能夠看到xml文件,說明服務端成功

 

2、服務端開發

    1,打開xe5(爲了測試android平臺,客戶端用xe5開發了)

    2,新建項目-選擇fm 移動項目

    3,添加THTTPRIO控件

    4,導入wsdl---

        添加項目---web service --import wsdl

         彈出嚮導對話框

         這步遇到了問題

         填入我服務端開發的soap地址,點擊下一步,最後彈出錯誤,緣由不明

          解決方法,回到xe開發服務端的界面,打開ide菜單ro中選擇edit serverice library

          選擇view -wsdl-save as 操做保存 wsdl文件

      回到xe5中的導入wsdl文件對話框,改成直接選擇上面的wsdl文件,成功獲得soap_1.pas

   在unit1.pas中添加soap_1.pas引用

 

    5,在界面添加2個edit,1個lable,一個button

     添加button的clickdaima

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      HTTPRIO1.URL:='http://192.168.1.103:8099/SOAP';
      Label1.Text:=IntToStr((HTTPRIO1 as NewService).Sum(StrToInt(Edit1.Text),strtoint(Edit2.Text)));
    end;

  6,發佈至android平臺測試(注意保證android平臺與電腦的網絡連通)

 

XE5 ANDROID經過webservice訪問操做MSSQL數據庫

1、服務端

 在ro裏添加函數(在impl上添加阿東connection,adoquery,dataprovider)

function TNewService.getdata(const sqlstr: Utf8String): Variant;
begin
qry1.Close;qry1.SQL.Text:='';
qry1.SQL.Text:=sqlstr;
qry1.Open;
ds1.Data:=dtstprvdr1.Data;
Result:=ds1.XMLData;//傳一個xmldata給客戶端
end;

 

2、客戶端調用同,添加wsdl,XE5 ANDROID平臺 調用 webservice

客戶端添加HTTPRIO,stringgrid等(fmx數據顯示暫時無相似datagrid的)

讀取數據代碼

HTTPRIO1.URL:='http://192.168.1.103:8099/SOAP';
ClientDataSet1.XMLData:=(HTTPRIO1 as soap.NewService).getdata('SELECT top 10 [EmployeeID],[EmployeeName],[DepartmentID] FROM [GM_MT].[dbo].[GM_KQ_Employee]');

 while  not ClientDataSet1.Eof do
 begin
   StringGrid1.Cells[0,i]:=ClientDataSet1.FieldByName('EmployeeID').AsWideString;
   StringGrid1.Cells[1,i]:=ClientDataSet1.FieldByName('EmployeeName').AsString;

   StringGrid1.Cells[2,i]:=ClientDataSet1.FieldByName('DepartmentID').AsString;
   ListBox1.Items.Add(ClientDataSet1.FieldByName('EmployeeName').AsWideString);
   i:=i+1;
   ClientDataSet1.Next;

  end;

 

 

如今遇到的問題是客戶端顯示中文有亂碼!暫時未解決,客戶端使用了ANSITOUTF8未解決

 

10-10 中文亂碼已解決:數據庫中文字段必定要設置爲nvarchar

 

http://pan.baidu.com/share/link?shareid=1663812760&uk=4127515284 

 

http://blog.sina.com.cn/s/blog_562349090101e9pa.html

相關文章
相關標籤/搜索