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

首頁 > 編程 > Delphi > 正文

Delphi中建表

2019-11-17 05:11:33
字體:
來源:轉載
供稿:網友
一、數據庫別名(Alias)的地位
  Delphi內建的數據庫引擎BDE(Borland Database Engine),提供了強大的數庫處理功能,BDE是Delphi數據庫功能的核心部分。

  以只有單機使用的本地數據庫為例,Delphi程序可以直接通過BDE來控制數據庫數據的存取。這種存取控制是以配置好BDE參數為前提的,具體的來說是正確設置了數據庫的別名(Alias),Delphi的最常用的數據庫訪問組件TTable,其屬性DataBaseName即為已經定義的數據庫別名,在沒有定義數據庫別名的情況下,是不能訪問具體的數據庫表格的。因此,在建立數據庫表格時,必須有兩個過程:一是通過BDE檢測相應的數據庫別名是否存在,假如不存在,則應首先建立相應的數據庫別名;二是檢測該數據庫別名(即DataBaseName)中是否存在需要建立的數據庫表格,假如不存在,才建立之。這樣,才能保護原有表格的數據不丟失。


二、session組件: Delphi數據庫程序與BDE的接口
  Delphi自動為數據庫應用程序提供了一個Session組件,這個Session組件是應用程序與BDE接口的要害。下面是Session組件關于BDE接口的幾個過程的原型說明。
  1.GetAliasNames(list:Tstrings);將當前BDE配置中的所有數據庫別名的名稱存放到List字符串列表中。

  2.AddStandardAlias(const Name, Path, DefaultDriver: string);增加一個標準類型的數據庫別名。例如增加一個名為Cntssamp,缺省數據庫驅動程序為PARADOX、存放路徑為c:/delphp11的別名:
  Session.AddStandardAlias(Cntssamp,c:/delphp11,Paradox);

  3.GetTableNames(const DatabaseName, Pattern: string; Extensions,SystemTables: Boolean; List: TStrings);可將指定數據庫別名中所有表格的名稱存放到List字符串列表中。

  4.SaveConfigFile; 將BDE配置存盤。
  另外,用List.IndexOf(指定串)的值判定字符串列表中是否有需要的字符串,來決定是否應建立新的數據庫別名和數據庫表格。

三、一個實例
  在Form1.FormCreate事件中寫入如下代碼,程序啟動時,將自動檢測是否存在數據庫別名Cntssamp,假如沒有則建立之;自動檢測別名Cntssamp中是否存在表格TSK(圖書庫),假如沒有則自動建立表格TSK。
  PRocedure TForm1.FormCreate(Sender: TObjec
  var
    ap:TStringList; {字符串列表變量}
  answer:Integer;
  begin
   ap:=TStringlist.Create;
   Session.GetAliasNames(ap); {取得別名列表}
   if (ap.IndexOf(Cntssamp)=-1) then {判定別名是否存在}
   begin
   answer:=application.MessageBox(別名Cntssamp不存在,現在創建嗎?,BDE信息窗口,mb—OKCancel);{增加一個名為Cngzsamp的數據庫別名}
   if answer=IDCANCEL then
begin
   ap.Free;
   Exit;
  end;

   Session.AddStandardAlias(Cntssamp,c:/delphp11,Paradox);
   Session.SaveConfigFile; {BDE配置文件存盤}
  end ;

   ap.Clear; {取得別名Cngzsamp中的所有表格名稱列表}
   Session.GetTableNames(Cntssamp,,False,False,ap);
   if (ap.IndexOf(TSK)=-1) then {判定表格是否存在}
   begin
   answer:=Application.MessageBox(別名Cntssamp中不存在表格TSK,現在創建嗎?,表格信息窗口,mb—OKCancel);
   if answer=IDCANCEL then

begin
   ap.Free;
   Exit;
   end;

   with table1 do
begin
   Active:=false;
   DatabaseName:=Cntssamp; {數據庫別名}
   TableName:=TSK;   {表格名}
   TableType:=ttParadox; {數據庫類型}
    with FieldDefs do
begin {增加字段}
   Clear;
   Add(SH,ftString,30,False); {書號 String(30)}
   Add(SM,ftString,30,False); {書名 String(30)}
   Add(CBS,ftString,20,False); {出版社 String(20)}
   Add(CBRQ,ftDate,0,False); {出版日期 Date}
   Add(YS,ftInteger,0,False); {頁數 Integer}
   end;

   with IndexDefs do
begin {增加索引}
   Clear; {按書號字段建立主索引}
   Add(SHSY,SH,[Primary,ixUnique]);
   end;

   CreateTable; {創建表格}
   end;
   end ;

   ap.free; {釋放變量ap}
  end;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 阳西县| 阿巴嘎旗| 陆良县| 建昌县| 石家庄市| 黄骅市| 明星| 牡丹江市| 拉孜县| 河北区| 涟水县| 菏泽市| 贵溪市| 绿春县| 东兰县| 明光市| 积石山| 山阴县| 仁化县| 吉林省| 鲁山县| 澎湖县| 南康市| 涟水县| 福建省| 洛阳市| 天祝| 中超| 五指山市| 阿拉善左旗| 金山区| 辽宁省| 习水县| 毕节市| 青田县| 汪清县| 鲁甸县| 体育| 松阳县| 衢州市| 胶州市|