XE5或XE7,操做系統Windows7(64位)操做系統。html
數據庫MSSQL選擇SQLServer2008。sql
若是數據庫服務沒有在開發電腦上,則須要在開發電腦上安裝Microsoft SQL Server 2008 Native Client。由於是64位開發環境,因此須要下載64位的安裝包[1]。數據庫
X64 包下載地址:瀏覽器
http://download.microsoft.com/download/9/9/d/99de4110-04b7-4e0e-8375-b04234fff0d8/sqlncli.msi服務器
若是是32位開發環境,則安裝X86安裝包,對應下載地址:tcp
http://download.microsoft.com/download/b/b/2/bb22098a-c071-415f-9269-2eb26cefb562/sqlncli.msiide
固然,也能夠將本實例中的組件SQLConnection---SQLDataSet---DataSetProvider更改成:測試
TFDPhysMSSQLDriverLink---TFDConnection---TFDQuery---TDataSetProviderspa
另一種服務端鏈接數據庫的替代方案是經常使用的 TADOConnection---TADOQuery---TDataSetProvider操作系統
固然,若是是客戶端即鏈接數據庫又進行顯示的話,將TDataSetProvider換爲TDataSource---TDBGrid便可,即 TADOConnection---TADOQuery---TDataSource---TDBGrid
在一臺電腦上搭建MSSQLServer2008或MSSQLServer2005數據庫。
IP地址 |
192.168.0.123 |
用戶名 |
test |
密碼 |
123 |
數據庫 |
xxx |
數據庫中的表 |
T_Bug |
File->New->Other…->Delphi Projects->DataSnap Server->DataSnapServer,點擊OK
1嚮導中選擇「VCL Forms Application」->Next>>
2嚮導中選擇 TCP/IP、HTTP、Server Methods Class ->Next>>
3嚮導中選擇默認端口211,單擊測試若出現成功,則可使用;不然本身設定一個端口,確保正常便可->Next>>
4嚮導中選擇「TDSServerModule」->Finish
而後保存工程到指定路徑。
瀏覽器中輸入
http://192.168.0.198:8080/datasnap/rest/TServerMethods1/EchoString/TestData
返回結果應爲{"result":["TestData"]}
使用DBExpress的DBX控件鏈接數據庫
打開ServerMethodUnit1單元,添加組件:
最後設置Connection爲ture進行鏈接測試,若是不行,檢查配置已經數據庫服務器是否添加了針對數據庫服務的防火牆例外。
爲了支持客戶端數據庫語句操做,須要對DataSetProvider的如下幾個屬性進行配置,poAutoRefresh,poPropogateChange,poAllowCommandText設置爲true。
編譯,啓動起來,待客戶端開發時鏈接使用。
File->New->VCL Forms Application – Delphi
上述工程建好後,再添加SnapClient。步驟以下:
File->New->Other…->Delphi Projects->DataSnap Server->DataSnapClient Module,點擊OK
嚮導中選擇「Remote server」->Next>>
嚮導中選擇「DataSnap stand alone server」->Next>>
嚮導中選擇「TCP/IP」->Next>>
嚮導中填寫信息「Host Name」填寫本機的IP地址「192.168.0.198」
端口填寫服務的端口「211」, 點擊Test Connection成功後,點擊Finish。
添加成功後,配置信息已經寫入SQLConnection的屬性中
在tool palette中,找到「DataSnap Client」下的TDSProviderConnection,將其放在ClientModuleUnit1這個單元裏。
配置SQLConnection,雙擊便可。在ServerClassName中填寫服務端對應DataSnap服務的類的名字TServerMethods1
最後,須要進行鏈接,雙擊Connected。
若是沒有鏈接成功,請檢查配置。
在Unit1這個form裏,增長控件,在Tool Palette中找到「Data Access」,在其下的TClientDataSet、TDataSource兩個組件放入Form。同時在DataControl這個組中,找到TDBGrid放到Form上,用於顯示數據。
爲了可以共用ClientModuleUnit1中的DSProviderConnection,在Unit1的Form中添加兩份相同的上述控件。
首先配置RemoteServer,正常雙擊便可將ClientModule1.DSProviderConnection1增長進來。
其次,配置ProviderName,雙擊便可設置爲「DataSetProvider1」
設置其DataSet便可。
設置其數據源便可,即DataSource。
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Close;
ClientDataSet1.CommandText := ' select top 10 * from T_Bug ';
ClientDataSet1.Open;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet2.Close;
ClientDataSet2.CommandText := ' select top 3 * from T_Bug ';
ClientDataSet2.Open;
end;
該問題須要在客戶端主單元中引入MidasLib便可(添加MidasLib的目的是省去發佈Midas.dll)。
若是服務器使用了http協議做爲datasnap通信的話,還需在客戶端程序中加上 uses DSHTTPLayer;若是使用tcp協議,無需增長DSHTTPLayer
在編譯電腦上運行正常,程序在其它電腦上運行出現問題
解決辦法:
--服務端
在unit ServerMethodsUnit1單元中,添加uses MidasLib;(添加MidasLib的目的是省去發佈Midas.dll)
若是用的是火鳥數據庫,只需拷貝dbxfb.dll和fbclient.dll
分發的服務器軟件只需三個文件:服務器程序、dbxfb.dll 和 fbclient.dll
--客戶端
在客戶端程序中加上uses MidasLib;(添加MidasLib的目的是省去發佈Midas.dll)
若是服務器使用了http協議做爲datasnap通信的話,還需在客戶端程序中加上 users DSHTTPLayer;若是使用tcp協議,無需增長DSHTTPLayer
添加後運行界面如圖:
[1] DBX Error:Driver could not be properly initialized. Client library may be missing, not installed pro [C/OL]/ [2016-07-10]. https://blog.csdn.net/2001xgp/article/details/51870859.
http://www.javashuo.com/article/p-olqkvpii-du.html
https://www.cnblogs.com/neugls/archive/2011/09/27/2193579.html LiveBinding