手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

多层数据库开发四:BDE会话期

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

4.3.2 创建、修改和删除别名
  要创建一个SQL服务器的别名,可以调用AddAlias函数。要创建一个本地数据库如Paradox、dBASE或ASCII文本的别名,可以调用AddStandardAlias函数。
  AddAlias需要传递三个参数,其中,Name参数用于指定名称,Driver参数用于指定SQL Links驱动程序,List参数用于指定连接参数。程序示例如下:
var
AliasParams: TStringList;
Begin
AliasParams := TStringList.Create;
Try
With AliasParams Do
Begin
Add(''''OPEN MODE=READ'''');
Add(''''USER NAME=TOMSTOPPARD'''');
Add(''''SERVER NAME=ANIMALS:/CATS/PEDIGREE.GDB'''');
End;
Session.AddAlias(''''CATS'''', ''''INTRBASE'''', AliasParams);
Finally
AliasParams.Free;
End;
End;
  与AddAlias不同的是,AddStandardAlias用于为Paradox、dBASE或文本创建别名,不需要连接参数,只需要指定一个路径和默认的驱动程序。程序示例如下:
  AddStandardAlias(''''MYDBDEMOS'''', ''''C:\TESTING\DEMOS\'''', ''''Paradox'''');
  要说明的是,调用AddAlias或AddStandardAlias函数创建的别名只存在于内存中,要把别名永久地保存到BDE配置文件中,请调用SaveConfigFile函数。
  创建了一个别名后,就可以调用ModifyAlias来修改别名的参数。ModifyAlias需要传递两个参数,一个是要修改的别名,还有一个是要修改的参数的列表。
  下面这个例子把CATS别名的OPEN MODE参数设为READ/WRITE:
var
List: TStringList;
Begin
List := TStringList.Create;
With List Do
Begin
Clear;
Add(''''OPEN MODE=READ/WRITE'''');
End;
Session.ModifyAlias(''''CATS'''', List);List.Free;
...
End;
  虽然CATS别名的参数有几个,但传递给ModifyAlias的列表中只需包含要修改的参数。
  要删除一个BDE会话期创建的别名,可以调用DeleteAlias函数。DeleteAlias只需要传递一个参数,即要删除的别名。
  注意:调用DeleteAlias函数仅仅是从内存中把一个别名删掉,如果要删除的别名已经永久地保存到BDE配置文件中,调用了DeleteAlias函数后还需要调用SaveConfigFile函数。
4.4 遍历所有的TDatabase构件
  这一节要介绍TSession的两个属性:Databases和DatabaseCount,用这两个属性可以遍历由一个BDE会话期对象管理的所有的TDatabase构件。
  Databases属性是一个数组,它的每一个元素是一个处于活动状态的TDatabase构件,这些TDatabase构件都处于BDE会话期对象的管理之下。
  DatabaseCount属性是一个整数,表明Databases数组中元素的个数。随着数据库的打开和关闭,DatabaseCount属性会自动变化。例如,在KeepConnections属性设为False并且没有显式使用TDatabase构件的情况下,每打开一个数据库,DatabaseCount属性就会加1,每关闭一个数据库,DatabaseCount属性就会减1。
  DatabaseCount属性一般要与Databases属性配合使用。例如,下面的代码把所有TDatabase构件的KeepConnection属性设为True:
var
MaxDbCount: Integer;
Begin
With Session Do
If (DatabaseCount > 0) then
For MaxDbCount := 0 to (DatabaseCount - 1) Do
Databases[MaxDbCount].KeepConnections:= True;
End;
4.5 访问Paradox表
  TSession的NetFileDir属性和PrivateDir属性只适用于Paradox表。其中,NetFileDir属性用于指定Paradox网络控制文件即PDOXUSRS.NET所在的目录,凡是需要共享Paradox表的应用程序必须指定这个文件所在的目录。PrivateDir属性用于指定Paradox表的私有目录,一些临时文件就存放在私有目录中。
  Delphi 4会自动从BDE配置文件中检索网络控制文件的位置,并把它赋给NetFileDir属性。也可以设置这个属性,指定另一个合法的网络路径。程序示例如下:
  Session.NetFileDir := ExtractFilePath(Application.EXEName);
  注意:只能在当前还没有打开任何Paradox表的情况下修改NetFileDir属性。
  如果PrivateDir属性为空,BDE会自动把当前目录作为私有目录。如果要运行的应用程序在一个远程的文件服务器上,为了避免老是读写文件服务器从而影响速度,最好把PrivateDir属性设为本地的某一个驱动器。
  注意:不能在设计期设置PrivateDir属性,否则,会出现“Directory Busy”的错误。另外,不要把PrivateDir属性设为一个驱动器的根目录,最好是子目录。程序示例如下:
  Session.PrivateDir := ''''C:\TEMP'''';
4.6 口 令
  有的Paradox表和dBASE表是被口令保护的,访问这些表时需要提供口令。TSession提供了若干个方法和一个事件用于管理口令。
4.6.1 AddPassword
  TSession的AddPassword函数一般在访问需要输入口令的Paradox或dBase表之前调用,用于提供口令。AddPassword唯一的参数就是口令。程序示例如下:
var
Passwrd: String;
Begin
Passwrd := InputBox(''''Enter password'''', ''''Password:'''', '''''''');
Session.AddPassword(Passwrd);
Try
 Table1.Open
Except
  ShowMessage(''''Could not open table!'''');
Application.Terminate;
End;
End;
  上面这个例子中调用InputBox函数让用户输入口令,也可以调用PasswordDialog函数,或者用TEdit构件做一个编辑框,把PasswordChar属性设为星号。
  如果用PasswordDialog函数的话,需要传递BDE会话期对象作为参数,程序示例如下:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
If PasswordDialog(Session) then
 Table1.Open
Else
 ShowMessage(''''No password given, could not open table!'''');
End;
  上述程序将打开一个“Enter password”对话框,如图4.1所示。
  图4.1 输入口令
  对话框上的“Add”按钮相当于调用AddPassword函数,“Remove”按钮相当于调用RemovePassword函数,“Remove All”按钮相当于RemoveAllPasswords函数。
  注意:要在程序中调用PasswordDialog函数,必须引用DBPWDlg单元。
如果您没有调用AddPassword或PasswordDialog函数来提供口令,当访问有口令保护的Paradox表和dBase表时,就会自动弹出如图4.1所示的对话框,让用户输入口令。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!