云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 分布式多层数据库开发

分布式多层数据库开发

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 7:23:29

function TPcSQL.GetDatabasenames: OleVariant; begin end;

procedure TPcSQL.SetDatabasename(const DBname, Username, Password: WideString); begin end;

function TPcSQL.GetDatabaseNames: OleVariant; var

I: Integer;

DBNames: TStrings; begin

// 建立一个字符串数组存放BDE所有的数据库别名数据。 DBNames := TStringList.Create; try

// 利用Session控件取得当前BDE所有的数据库别名数据。 Session1.GetDatabaseNames(DBNames);

/// 建立一个变量数组给函数返回变量Result。

Result := VarArrayCreate([0, DBNames.Count - 1], varOleStr);

// 最后再把数据库别名数据指定给该变量数组。 for I := 0 to DBNames.Count - 1 do Result[I] := DBNames[I]; Finally

//如果错误就把构造的DBNames释放掉。

DBNames.Free; end; end;

上面的函数的关键除了取得BDE 数据库别名以外,还声明了一个变量数 组来存放数据库别名数据,所以用VarArrayCreate函数建立一个变量数组, 其中 参数1: 指定数组范围

参数2: 数组数据类型,由于别名要通过DCOM传给前台,数据类型必 须设成varOleStr 才有效。

同时还要说明VarArrayCreate函数是在Variants单元中建立的,所以,在implementation下还需要声明:

uses Variants;

否则会编译出错,,必要时还要加上Unit1。

第二个过程是客户机提供上来的联机数据。

procedure TPcSQL.SetDatabaseName(const DBName, UserName, Password: WideString); begin try

// 把前台传来的数据库别名、用户上线名称、用户上线密码 // 等三项数据指定给TDatabase控件,并且执行联机的操作。

Database1.Close;

Database1.AliasName := DBName;

if (UserName<>'') and (Password<>'') then begin

Database1.Params.Values['PASSWORD'] := Password; Database1.Params.Values['USER NAME'] := UserName; end;

Database1.Open; except

// 如果联机时发生错误,则产生一个exception给前台程序 // 前台程序将会利用到这个exception来判断是否要把输入上

// 线数据的窗口激活。

on E: EDBEngineError do

raise Exception.Create('Password Required') ; end; end;

第六节 服务器端进行客户计数

除了上面的功能外,这个程序还加上了一个在线用户以及查询用户统计 的功能。由于这个应用程序执行模式是 Multiple Instance执行模式,所以 当某个前台第一次连上线后,应用程序服务器会激活RemoteDataModule的 事件程序,而断线后又会执行OnDestroy事件程序,因此就可以用这两个事件 计算连上服务器的用户个数。至于Query个数的计算,则由TQuery的OnAfterOpen事件函数判断。

----------------------------------------------------------------- Form1部分,主要用于显示

-----------------------------------------------------------------

首先在form上安放五个Tlabel控件,其中四个放在一个容器Panel1里 两个计数的label分别取名为ClientCount和QueryCount。属性Capyion=0 。

注意,下面的程序在Form1所在的单元Unit1中编写。

在private下声明两个变量:

FQueryCount: Integer; FClientCount: Integer;

在public下声明两个过程

procedure UpdateClientCount(Incr: Integer); procedure IncQueryCount;

在实现区写入过程:

procedure Tform1.UpdateClientCount(Incr: Integer); begin

FClientCount := FClientCount + Incr;

ClientCount.Caption := IntToStr(FClientCount); end;

procedure Tform1.IncQueryCount; begin

Inc(FQueryCount);

QueryCount.Caption := IntToStr(FQueryCount); end;

搜索更多关于: 分布式多层数据库开发 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

function TPcSQL.GetDatabasenames: OleVariant; begin end; procedure TPcSQL.SetDatabasename(const DBname, Username, Password: WideString); begin end; function TPcSQL.GetDatabaseNames: OleVariant; var I: Integer; DBNames: TStrings; begin // 建立一个字符串数组存放BDE所有的数据库别名数据。 DBNames := TStringList.Create; try // 利用Session控件取得当前BDE所有的数据库别

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com