这是我将用户添加到Interbase安全数据库的Delphi代码
uses
IBHeader,IBExternals
var
Form7: TForm7;
userData: TUserSecData;
userDataPtr: PUserSecData;
status: array[0..19] of ISC_STATUS;
isc_status: PISC_STATUS;
procedure TForm7.Create_UserClick(Sender: TObject);
begin
{ setup isc_status pointer }
isc_status :=@status;
{ setup user data pointer to point to user data structure }
userDataPtr :=@userData;
{ setup user data structure }
userData.user_name :='aseem';
userData.password :='xxxxxxx';
userData.protocol :=sec_protocol_local;
userData.dba_user_name :='SYSDBA';
userData.dba_password :='xxxxxxx'; { Don_t hardcode this }
userData.first_name :='asa';
userData.last_name :='sad';
userData.sec_flags :=sec_password_spec or sec_dba_user_name_spec or
sec_dba_password_spec or sec_first_name_spec or sec_last_name_spec;
{ add user to security database }
isc_add_user(isc_status,userDataPtr);
end;
但有一个错误,如
isc_add_user(isc_status,userDataPtr);
在IBheader.pas,IBExternals 中找不到功能
请告诉我这段代码中的问题是什么?
我正在使用Delphi 2007专业版,我正在使用CodeGear内源文件夹中的IBheader.pas,IBExternals.pas文件。
答案 0 :(得分:2)
您可能想要使用IBIntf.pas中定义的界面:
uses IBHeader, IBExternals, IBIntf;
procedure TMyForm.RegisterNewUser;
var
status: ISC_STATUS;
status_vector: array[0..19] of ISC_STATUS;
user_sec_data: UserSecData;
gds: IGDSLibrary;
begin
//setup the user info and then
...
//call the function
gds := GetGDSLibrary;
gds.LoadLibrary;
try
status := gds.isc_add_user(@status_vector[0], @user_sec_data);
//check the status and act accordingly
finally
gds.FreeLibrary;
end;
end;
或者您可能希望使用TIBSecurityService,它是IBX的一部分,通过调用它的AddUser方法,提供您正在使用的标头的相同库。
或者,在现代Interbase中,您可能只想执行CREATE USER
SQL语句来执行该操作。
答案 1 :(得分:1)
下载 Unified Interbase 库并从中复制所有必需的API声明
TLama也建议这篇文章:http://edn.embarcadero.com/article/25831