📄 bckj简要说明.htm
字号:
ExecFlag: WordBool): WordBool; safecall;
供远程客户指定操作数据库的SQL语句,其中ClearFlag指明是否先清空TADOQuery的SQL
属性, ExeFlag指明是否通过TADOQuery执行上传的SQL语句而不通过TDataSetProvider返回
结果.每个ClientDataSet在Active之前都应使用本方法指定SQL,多个ClientDataSet调用时
则每个ClientDataSet使用ApplyUpdates(0)之前也都要调用此方法.所谓通用的中间层服务
器也就在于每次客户端查询数据都可以指定SQL语句而不用使用不同的提供者.
必须登录成功而且有连接数据库的权限才有可能正确执行.
●function ChangePassword(const OldPassword, NewPassword: WideString;
EncryptFlag: WordBool): WordBool; safecall;
提供远程客户远程修改密码的功能,其中EncryptFlag指明OldPassword,NewPassword是
不是加密串(加密时BasicStr是登录用户名,即Login方法中的UserName).
必须登录成功而且有修改密码的权限才能正确执行.
●function GetErrorString(Index: Integer): WideString; safecall;
远程客户的每次方法调用都可能产生错误信息,该方法提供读取错误信息提示的功能.
其中Index指明第几次调用,0表示最后一次, 无错误则返回空串. 此方法本身不产生错误信
息.
调用此方法不要求登录成功.
●procedure SetUpdateTableName(const TableName,
FieldIndexs: WideString); safecall;
提供远程客户多表查询时在更新前指定不更新字段的功能, 其中TableName指定要更新
的表名,可以为空,FieldIndexs则是不用更新的字段序号列表, 由TSTRINGLIST.TEXT转换而
来,如:
DCOMConnection.Appserver.Login('Admin', '', False);//远程登录,假设成功.
DCOMConnection.Appserver.AddSQL(True, 'select a.a1,a.a2,b.* from a,b',
False);
DCOMConnection.Appserver.AddSQL(False, ' where a.a1=b.b1', False);
ClientDataset.Active := True;
...
FFieldIndexs.Clear;FFieldIndexs.Add('0');FFieldIndexs.Add('1');...
DCOMConnection.Appserver.AddSQL(True, 'select a.a1,a.a2,b.* from a,b',
False);
DCOMConnection.Appserver.AddSQL(False, ' where a.a1=b.b1', False);
DCOMConnection.Appserver.SetUpdateTableName('',
WideString(FFieldIndexs.Text);
ClientDataSet.ApplyUpdates(0);
在每次ClientDataSet调用ApplyUpdates之前都要调用SetUpdateTableName方法.
●procedure BeginTrans; safecall;
提供远程客户启动数据库事务的功能,事务可以嵌套(即多次调用这个方法,但要注意配
套的提交或回滚).
必须登录成功而且有连接数据库的权限才有可能正确执行.
●procedure CommitTrans(RollbackFlag: WordBool); safecall;
提供远程客户提交事务的功能.其中RollbackFlag指定提交失败后是否立即回滚.
必须登录成功而且有连接数据库的权限才有可能正确执行.
●procedure RollbackTrans; safecall;
提供远程客户回滚事务的功能.
必须登录成功而且有连接数据库的权限才有可能正确执行.
●function GetUserInfo(AllUsersFlag: WordBool): WideString; safecall;
提供远程客户读取用户相关权限信息的功能,其中AllUsersFlag表明是读取当前登录用
户还是读取所有用户信息, 要想读取所有用户信息, 当前登录用户不必具有用户管理权限.
返回串可转换成TSTRINGLIST.TEXT,其中:TSTRINGLIST[0]=登录用户名,TSTRINGLIST[1]=登
录用户真名,TSTRINGLIST[2]=登录用户别名, TSTRINGLIST[3]=由调用者解释的登录用户关
键信息,TSTRINGLIST[4]=登录用户是否可以更改密码(YES/NO), TSTRINGLIST[5]=既定的登
录用户的数据库连接方式(如BDE或ADO等八种/NO不允许连接数据库, 只要不是NO,本程序作
为 COM/DCOM 服务器只用ADO方式连接数据库,实际上与前面介绍的数据库连接方式无关),
TSTRINGLIST[6]=登录用户当前的连接数据库方式(空则表示未连接数据库),TSTRINGLIST[7]
=登录用户登录成功后再重新登录失败后是否自动退出系统(YES/NO),TSTRINGLIST[8]=登录
用户是否具有用户管理权限(YES/NO), 当AllUsersFlag=True时,TSTRINGLIST[9]=其他用户
一真名,TSTRINGLIST[10]=其他用户一别名, TSTRINGLIST[11]=由调用者负责解释的其他用
户一关键信息,TSTRINGLIST[12]=其他用户一是否具有用户管理权限(YES/NO),TSTRINGLIST
[13]=其他用户一是否被禁用(YES/NO),TSTRINGLIST[14]=其他用户二真名,TSTRINGLIST[15]
=其他用户二别名,TSTRINGLIST[16]=由调用者负责解释的其他用户二关键信息,TSTRINGLIST
[17]=其他用户二是否具有用户管理权限(YES/NO), TSTRINGLIST[18]=其他用户二是否被禁
用(YES/NO),......, 依此类推,列出所有用户的信息,其他用户是以它们的真名排序的.
必须登录成功才能返回正确结果.
●function ProcessPassword(const BasicStr, Value: WideString;
ToNatural: WordBool): WideString; safecall;
提供加解密字串的功能,其中ToNatural=True时表示解密,反之加密,加密解密都需依赖
于同一BasicStr串(任意长度),加密时Value为明文,不超过16个字符, 返回密文是96个字符
(全部是0到9的数字),解密时Value为96个字符的密文,返回16个以下字符的明文.
调用此方法不要求登录成功.
●function ProcessPassword2(const BasicStr, Value: WideString): WideString;
safecall;
提供加密字串的功能,Value为明文,不超过16个字符, 返回密文是96个字符(全部是0到
9的数字). 调用Login方法时如指定EncryptFlag为真,则其中的Password必须是经本方法加
密后的密文字串.
调用此方法不要求登录成功.
●function StringEncrypt(const SourceString, Password: WideString;
EncryptFlag: WordBool): WideString; safecall;
提供加解密字串的功能,其中EncryptFlag=True时表示加密,反之加密,加密解密都需依
赖于同一Password串,加密时SourceString为明文,任意长度,密文是以十六进制编码的形式
返回的,解密时SourceString为密文,返回明文. 加密字串所用的算法是随机选择的(可选加
密算法很多,如DES,BLOWFISH等),因此同一字串同一密码每次加密后的密文不一定是一致的,
但不影响其解密.
调用此方法不要求登录成功.
●function StringCompress(const SourceString: WideString;
CompressFlag: WordBool): WideString; safecall;
提供压缩解压缩字串的功能,其中CompressFlag=True时表示压缩,反之解压缩,待压缩
的字串中不能存在零字符,压缩后是以十六进制编码的形式返回的,很可能比原字串还要长,
解压缩则返回原字串.
调用此方法不要求登录成功.
●function GetProcedureNames: WideString; safecall;
此方法用于读取所连接数据库的存储过程列表,返回值可转换成TSTRINGLIST.TEXT.
必须登录成功而且有连接数据库的权限才有可能正确执行.
●function GetTableNames(SystemTables: WordBool): WideString; safecall;
此方法用于读取所连接数据库的表名列表,其中SystemTables表明是否包含系统表, 返
回结果可转换成TSTRINGLIST.TEXT.
必须登录成功而且有连接数据库的权限才有可能正确执行.
●function GetFieldNames(const TableName: WideString): WideString;
safecall;
此方法用于读取所连接数据库的指定表名(TableName)的字段列表, 返回结果可转换成
TSTRINGLIST.TEXT.
必须登录成功而且有连接数据库的权限才有可能正确执行.
●function GetRegisterUser: WideString; safecall;
此方法用于读取本程序的注册用户名,未注册或假注册失效则返回空串.
必须登录成功才能返回正确结果.
●function SetUserValue(const UserName, Value: WideString): WordBool;
safecall;
此方法用于保存指定用户(UserName为用户真名)的由调用者解释的关键信息.
必须登录成功而且有用户管理权限才能正确执行.
●function GetDateTime: TDateTime; safecall;
此方法用于读取本程序所在计算机的系统时间,返回结果为该方法在本程序上执行时的
系统时间, 要用于客户机器与服务器时间同步,请自行考虑返回结果在网络中传输所造成的
延时误差.
调用此方法不要求登录成功.
●function ConnectNewObject(const TheClassName: WideString): WordBool;
safecall;
此方法用于连接指定类名TheClassName的自动化服务器, 返回结果指是否成功连接,成
功则用CustomObject属性可以访问所连接的自动化服务器. 不管成功与否,先前的连接肯定
要断开.
调用此方法要求登录成功并有相应权限.
●procedure DisConnectObject; safecall;
此方法用于断开CustomObject属性所连接的自动化服务器,CustomObject将不可访问.
调用此方法要求登录成功并有相应权限.
●CustomObject属性: function Get_CustomObject: OleVariant; safecall;
此属性用于访问由ConnectNewObject方法连接的自动化服务器的相关属性和方法.
访问此属性要求登录成功并有相应权限.
●Object0属性: function Get_Object0: OleVariant; safecall;
此属性用于访问第一个外挂COM服务器的相关属性和方法.
访问此属性要求登录成功并有相应权限.
同样的属性还有:Object1、Object2、...Object9.
本COM/DCOM服务器自动将远程客户的登录、修改密码、数据库查询与更新、 断开等信
息记录在ServerViewForm中用于监视远程客户的操作(由DLL打开方式中的IDefaultRDM参数
执行的操作将不记录),在ServerViewForm中可以选择是否自动保存监视信息(监视信息达到
一定量时会被清除),可以随时查看客户连接信息(如连接时间,登录用户以及外挂COM服务器
的激活状态等),还可选择远程客户强行断开(最好是APARTMENT线程选项).</PRE>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -