要创建一个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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




