Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14481360
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:46:39

下载本文示例代码
strong>一、数据库别名(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; strong>一、数据库别名(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; 下载本文示例代码


Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表Delphi中建表
阅读(198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~