国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

三層結構的設計模式

2019-11-18 18:33:57
字體:
來源:轉載
供稿:網友
.一般簡單的三層結構設計方式:

Remote Data Module服務器
 
 
 

Query組件

DataSetPRovider組件

客戶端應用程序

DCOM組件

ClientDataSet組件

 

 現在一般介紹三層結構大多數使用上面的數據模型進行講解,通過DataSource組件連接ClientDataSet組件,然后通過數據感知控件連接DataSource組件,來進行對數據庫數據的訪問。這樣就使得數據庫服務器、應用服務器和應用程序之間的聯系過于緊密,如果其中一個做了改動,其他的都要跟著改動,對于系統的升級與維護帶來很多不便。

2.新的三層結構設計模式:

Remote Data Module服務器
 
 
 
 
數據庫
Query組件
DataSetProvider組件
客戶端應用程序
DCOM組件
ClientDataSet組件


上面是我們現在采用的三層結構模式,它不通過DataSetProvider組件來傳遞數據,而是通過Remote Data Module服務器所提供的Interface來進行數據的傳遞。這樣就使得應用程序完全與數據庫服務器沒有任何關系,對整個系統的升級與維護都帶來極大的好處。
對于集合數據,由于Interface的返回值可以是OLEVarient類型,因此我們可以創建ClientDataSet來進行集合數據的傳遞。
3.部分源程序
//函數1:創建ClientDataSet
procedure CreateCds(const Ds: TDataSet; var Cds: TClientDataSet);
var
  I: Integer;
begin
  Cds := TClientDataSet.Create(nil);
  for I := 0 to Ds.FieldCount - 1 do
  begin
    with Cds.FieldDefs.AddFieldDef do
    begin
      Name := Ds.FieldDefs[I].Name;
      DataType := Ds.FieldDefs[I].DataType;
      if DataType = ftAutoInc then
        DataType := ftInteger;
      Size := Ds.FieldDefs[I].Size;
    end;
  end;
  Cds.CreateDataSet;
end;
//函數2:給ClientDataSet負值
procedure TransData(const Ds: TDataSet; var Cds: TClientDataSet);
var
  I: Integer;
begin
  if Ds.RecordCount > 0 then
  begin
    Ds.First;
    while not Ds.Eof do
    begin
      Cds.Insert;
      for I := 0 to Ds.FieldCount - 1 do
        Cds.FielDs[I].Value := Ds.FielDs[I].Value;
      Cds.Post;
      Ds.Next;
    end;
  end;
end;

上一篇:異類的屏幕保護

下一篇:TManagedDataSet和DataSetPool的實現

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 武安市| 遂川县| 慈利县| 齐河县| 北京市| 金堂县| 玉环县| 翁源县| 浪卡子县| 抚宁县| 汾阳市| 宜兴市| 大庆市| 庆元县| 中阳县| 九龙坡区| 县级市| 徐闻县| 涡阳县| 明水县| 柯坪县| 墨江| 驻马店市| 梨树县| 班戈县| 来安县| 怀集县| 锦屏县| 哈尔滨市| 依兰县| 邹平县| 榆林市| 射阳县| 江西省| 翁源县| 萝北县| 陆丰市| 靖边县| 平谷区| 濮阳市| 循化|