说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中建立和使用别名

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中建立和使用别名

通 常 我 们 在Delphi 外, 通 过 使 用Borland 数 据 库 引 擎(BDE) 的 设 置 单 元(bdecfg.exe) 来 建 立 和 设 置 别 名(Alias), 但 是, 实 际 上 用 户 可 以 在Delphi 或 应 用 程 序 中 用TDatabase Component 或 其 他 方 法 建 立 和 使 用 别 名, 而 不 必 在IDAPI.CFG 中 预 先 定 义。

建 立 有 效 的 别 名 是 非 常 重 要 的, 别 名 详 细 说 明 了 数 据 库 的 定 位 信 息 和 连 接 数 据 库 服 务 器 的 参 数, 当 发 布 应 用 程 序 时 不 必 担 心IDAPI.CFG 中 是 否 有 某 项 设 置。

利 用TDatabase Component 建 立 别 名

建 立 和 设 置 一 个 使 用 标 准 数 据 库 的 别 名 的 步 骤 如 下。 //通过“对象观察器”建立BDE别名

1.建 立 一 个 新 工 程(Project)。

2.将 组 件(Component) TDatabase、TTable、TDataSource、TDBGrid 和TButton 放 在FORM 上。

3.双 击TDatabase Component 或 在TDatabase 快 速 菜 单 上 选 择Database Editor 运 行Database 属 性 编 辑 器。

4.将Database Name 设 置 成‘ZldchAlias’, 这 个 名 字 将 被 当 作 别 名, 用 来 设 置 数 据 集 组 件TTable、TQuery、TStoredProc 等 的DatabaseName 属 性。

5.将Driver Name 设 置 成STANDARD。

6.单 击Defaults 按 钮, 将 PATH= 自 动 加 在 Parameter Overrides 框 中。

7.将PATH= 设 置 成PATH=C: , 单 击OK 按 钮 关 闭 Database Editor。

8.单 击OK 按 钮 关 闭Database Editor。

9.将TTable 的DatabaseName 属 性 设 置 成‘ZldchAlias’。

10.将TDataSource 的DataSet 属 性 设 置 成‘Table1’。

11.将DBGrid 的DataSource 属 性 设 置 成‘DataSource1’。

12.在Tbutton 的OnClick 事 件 过 程 中 加 入 下 列 代 码:

procedure TForm1.Button1Click(Sender:Tobject);

begin

Table1.Tablename=‘customer’;

Table1.Active:=true;

end;

13.运 行 程 序。

上 面3 ~12 步 也 可 以 用 以 下 过 程 实 现:

MyAddStandAlias(AliasN: String;DbLocat: String;DriverN:string ); //使用程序的方法建立BDE别名

//{AliasN 别 名 名

//DbLocat 数 据 库 定 位 目 录

DriverN 联 结 驱 动 类 型}

begin

with Form1.Database1 do

begin

DatabaseName:= AliasN;

DriverName:= ‘STANDARD’;

Params.Clear;

Params.Add(‘PATH=’ +DbLocat);

Params.Add(‘DEFAULT DRIVER=’ +DriverN);

end

end;

procedure TForm1.Button1Click(Sender:Tobject);

begin

MyAddStandAlias(‘ZldchAlias’

‘C: PARADOX’);

Table1.DatabaseName:=‘ZldchAlias’;

DataSource1.DataSet:= Table1;

DBGrid1.DataSource:= DataSource1;

Table1.Tablename=‘customer’;

Table1.Active:=true;

end;

建 立 使 用INTRBASE 数 据 库 的 别 名

建 立 使 用INTRBASE 数 据 库 别 名 的 步 骤 如 下。

1 ~4 步 同 上。

5. 将Driver Name 设 置 为INTRBASE。

6. 单 击Defaults 按 钮, 下 列 内 容 会 自 动 加 在 Parameter Overrides 框 中:

SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB

USER NAME=MYNAME

OPEN MODE=READ/WRITE

SCHEMA CACHE SIZE=8

LANGDRIVER=

SQLQRYMODE=

SQLPASSTHRU MODE=NOT SHARED

SCHEMA CACHE TIME = -1

PASSWORD=

7. 将 以 上 内 容 改 为:

SERVER NAME=C:\Program Files\Borland\Delphi 3\Demos\Data\EMPLOYEE.GDB

USER NAME=SYSDBA

OPEN MODE=READ/WRITE

SCHEMA CACHE SIZE=8

LANGDRIVER=

SQLQRYMODE=

SQLPASSTHRU MODE=NOT SHARED

SCHEMA CACHE TIME = -1

PASSWORD=masterkey

8. 将TDatabase 的 属 性LoginPrompt 设 置 成‘False’, 如 用 户 在Parameter Overrides 框 中 给 出 了 正 确 的PASSWORD, 连 接 数 据 库 时 将 不 会 提 示 要 求 输 入 口 令。 请 注 意: 如 果 在Parameter Overrides 框 中 给 出 的PASSWORD 不 正 确, 而TDatabase 的 属 性LoginPrompt 设 置 为‘False’, 程 序 运 行 时 将 出 错, 但 并 不 会 提 示 要 求 重 新 输 入 正 确 口 令。Intrbase 安 装 后, 系 统 唯 一 授 权 的 用 户 是SYSDBA, 缺 省 口 令 是“masterkey”

所 有 其 他 的 用 户 都 必 须 由SYSDBA 添 加, 所 以 在Intrbase 系 统 安 装 后 要 尽 快 更 改 用 户SYSDBA 的 口 令。

9、10、12 步 同 上 文 的8、9、11 步。

11. 将TDataSource 的DataSet 属 性 设 置 成‘Query1’。

13. 在Tbutton 的OnClick 事 件 过 程 中 加 入 下 列 代 码:

procedure TForm1.Button1Click(Sender:Tobject);

begin

Query1.SQL.Clear;

Query1.SQL.ADD(‘SELECT DISTINCT * FROM CUSTOMER C

SALES S WHERE --- (S.CUST_NO=C.CUST_NO) ORDER BY C.CUST_NO

C.CUSTOMER’);

Query1.Active:=True;

end;

14. 运 行 程 序。

过 程MyAddStandAlias 的 参 数 可 以 通 过 各 种 方 式 赋 值。 目 录、 服 务 器 名、 路 径、 数 据 库 名 和 其 他 别 名 所 需 的 参 数 都 可 以 通 过 输 入 对 话 框 或 从.INI 文 件 读 入 程 序 中。 通 过 以 上 方 法 建 立 的 别 名 只 在 程 序 运 行 时 存 在, 其 他 应 用 程 序 不 能 使 用。

利 用Session 建 立、 修 改、 删 除 别 名

所 有 数 据 库 管 理 应 用 程 序 都 自 动 提 供 一 个 名 为Session 的Session 组 件。 每 个 和 数 据 库 程 序 相 关 的 数 据 集 组 件 都 包 含SessionName 属 性, 它 决 定 了 和 该 组 件 相 关 的Session 组 件。 因 为Session 封 装 了 一 系 列 数 据 库 连 接 特 性, 大 部 分Session 组 件 的 方 法 都 通 过BDE 别 名 工 作。 每 个 和Session 有 关 联 的 数 据 库 组 件 都 有 别 名( 尽 管 在 处 理PARADOX 和DBASE 数 据 库 时, 完 整 的 路 径 可 以 取 代 别 名), 通 过Session 可 以 检 测 和 决 定 别 名 的 可 见 性、 跟 踪 别 名 名 和 其 他 连 接 驱 动 信 息 以 及 建 立、 修 改 和 删 除 别 名。

Session 的 设 置 模 式(ConfigMode) 属 性, 决 定 了 什 么 样 的BDE 别 名 对 它 是 可 见 的。 默 认 设 置 是cmAll, 它 可 解 释 成[cfmVirtual or cfmPersistent]。 如 果 设 置 模 式 值 为cmAll, 由Session 建 立 的 所 有 别 名、 用 户 系 统BDE 设 置 文 件 中 预 定 义 的 别 名 以 及BDE 在 内 存 中 维 护 的 所 有 别 名 均 可 见。

设 置 模 式 的 主 要 目 的 是, 允 许 应 用 程 序 详 细 说 明 和 限 定 别 名 在Session 级 别 上 的 可 见 性。 例 如 把 设 置 模 式 设 置 成[cfmSession], 可 使Session 只 可 见 那 些 由 其 建 立 的 别 名, 所 有 其 他 的 别 名 都 无 效。

当 别 名 在Session 存 在 期 间 建 立 后,BDE 在 内 存 中 建 立 一 个 它 的 拷 贝。 这 个 局 部 拷 贝 只 对 建 立 它 的Session 有 效, 除 非 在 同 一 个 应 用 程 序 中 其 他Session 的 模 式 设 置 成cmAll 或cfmPersistent。

使 用Session 的SaveConfigFile 方 法, 可 以 将 内 存 中 的 别 名 写 入BDE 设 置 文 件 中, 这 样 其 他BDE 允 许 的 应 用 程 序 就 可 以 使 用 该 别 名。

Session 组 件 有 五 个 方 法, 允 许 应 用 程 序 跟 踪BDE 别 名 的 参 数 和 驱 动 程 序 等 信 息:

GetAliasNames: 列 出Session 已 经 处 理 过 的 别 名;

GetAliasParams: 列 出 指 定 的 别 名 的 参 数;

GetAliasDriverName: 返 回 包 含 别 名 使 用 的 驱 动 程 序 名 的 字 符 串;

GetDriverNames: 返 回 所 有 有 效 的BDE 驱 动 程 序;

GetDriverParams: 返 回 指 定 的 驱 动 程 序 的 驱 动 参 数。

Session 可 以 在 其 存 在 期 间 建 立、 修 改 和 删 除 别 名。 方 法AddAlias 为SQL 数 据 库 服 务 器 建 立 一 个 新 的BDE 据 工 作 区。 方 法AddStandardAlias 为PARADOX、DBASE、ASCII 表 建 立 一 个 新 的BDE 标 准 别 名。

AddAlias 需 要 三 个 参 数: 一 个 包 含 别 名 工 作 区 名 的 字 符 串、 一 个 说 明SQL 连 接 驱 动 类 型 的 字 符 串、 一 个 汇 集 连 接 参 数 的 列 表 字 符 串, 其 格 式 为:

procedure AddAlias(const Name

Driver: string; List: TStrings);

AddStandardAlias 需 要 三 个 参 数: 别 名 名、PARADOX 和DBASE 表 存 放 的 完 整 路 径、 当 试 图 打 开 一 个 没 有 扩 展 名 表 时 的 默 认 驱 动 类 型, 其 格 式 为:

procedure AddStandardAlias(const Name

Path

DefaultDriver: string);

当 为Session 添 加 一 个 别 名 时, 它 仅 对 该Session 和 其 他 设 置 模 式 值 为cfmPersistent 的Session 有 效。 为 了 使 新 建 的 别 名 对 所 有 的 应 用 程 序 有 效, 在 建 立 别 名 后 应 该 调 用SaveConfigFile 方 法。

修 改 别 名 可 以 调 用 过 程ModifyAlias, 它 需 要 二 个 参 数: 将 要 修 改 的 别 名 名 和 包 含 修 改 后 连 接 参 数 值 的 列 表 串, 格 式 为:

procedure ModifyAlias(Name: string; List: TStrings);

方 法DeleteAlias 可 以 使 别 名 对Session 无 效, 但 它 不 会 删 除 写 入BDE 设 置 文 件 的 别 名。 如 果 要 将 其 从BDE 设 置 文 件 中 删 除, 需 要 在 调 用DeleteAlias 后 再 调 用SaveConfigFile。DeleteAlias 只 需 一 个 参 数: 别 名 名。 其 格 式 为:

procedure DeleteAlias(const Name: string);

利 用Session 操 作 别 名 具 有 更 大 的 灵 活 性, 将 给 编 程 和 发 布 程 序 尤 其 是C/S 应 用 程 序 带 来 很 大 方 便。 以 上 例 程 在Win95、Delphi 3.0 下 调 试 通 过。

clone(deep) -JQuery API empty()-JQuery API insertAfter(expr)-JQuery API insertBefore(expr) -JQuery API prepend(content)-JQuery API prependTo(expr)-JQuery API remove(expr)-JQuery API wrap(elem)-JQuery API wrap(html) -JQuery API add(elements) -JQuery API add(html)-JQuery API add(expr) -JQuery API children(expr) -JQuery API contains(str) -JQuery API end() -JQuery API filter(filter) -JQuery API filter(expression) -JQuery API find(expr) -JQuery API is(expr) -JQuery API next(expr)-JQuery API not(elems)-JQuery API not(expr)-JQuery API not(el)-JQuery API parent(expr)-JQuery API parents(expr)-JQuery API prev(expr)-JQuery API siblings(expr)-JQuery API Events事件-JQuery API bind(type,data,fn)-JQuery API blur(fn) -JQuery API blur() -JQuery API 数据挖掘 急需VC++的高手指点一下,北京的最好,呵呵,成了请你吃饭! 98下的闪存问题 在线等~~~~~~~~ 文件的问题 谁来看看,好难啊 关于oracle数据打包的问题 SQL出错了...以前装好一次..不知道被谁搞了,启动不起了..我重装..就这样了 急!!!为什么的为加了<% %>,传 上去就不能打开呢?去掉又可以的,改成客户端运行又可以 如何将服务器a里mysql的所有数据导道服务器b中? 动网论坛6问题:论坛版面信息(版名、斑竹、版面说明)经常自动丢失 大家帮帮我!!!!!!!!!!!!!!! 数据仓库与数据库 动态创建的列和手工填加的列有什么不同吗? SQL语句中openrowset函数的问题?12点以前结帖,在线等待!!!!!!!!!!!!!!!!! 请问在win2000server中对于ftp设置... Promise真的是混蛋!B死他!(驱动高手帮忙) 客户端怎么封装数据库? 谢谢 杀不出毒,机子还很慢,请大家看看 急啊!系统有问题! 请问怎样知道自己程序的某个DLL是否已经加载? 将数据导出到excel,同名文件自动覆盖应该怎么做? 求教高手! 制作发邮件程序出错,高手请教! 求助高手:在JavaScript中如何赋值给父窗体上的某一ASPX控件? 菜鸟的问题 怎么web页面控制打印范围? 推箱子的每一关是用算法算的,还是人编的? 为什么北京的高程准考证到现在还没有发呀??? 谁有类似万网的域名查询系统??高分相送! 我想搞软件开发,学点网络知识,请问有多大用处? 在ASP.Net中,用VB.net写代码,怎么取得到的记录集中的记录个数啊? 请教双网隔离方案 重装系统以后,如何对Microsoft Outlook里的各种参数、选项进行设置? 求OA设计方案 请 ychuiming(飞天),hkbarton(宁静至远||淡泊明志) 进来接分 在ASP.Net中,用VB.net写代码,怎么取得到的记录集中的记录个数啊? pb中有没有与或操作符?就象VB中的Xor这类操作符? 如何从一个单一的JSP程序员迈进J2EE的世界--请高手指点迷津 第一次来csdn,请各位多多关照。随便问一个巨傻的关于BDE的问题。 离职,却被原来公司经理阴了一下 求AutoResize控件(分不够可加) 谁做过远程代理的程序(急,100分求助,不够再给) mm不让我去接她 树形菜单的问题 如何限制对SQLSERVER的请求访问数? 各位,跪谢了!不能见死不救啊! session 问题 我的服务器 无法更改 session值了 有没有好的远程服务器监控软件 主细表类型的报表问题,希望有人帮我!先谢谢了!(急) 大家救救我得机子吧~~ 极度深奥的问题!!有没有谁知道“xp_logattach ”这个存储过程的实际作用与用法。 为什么do business中要用business不用busy 《the princess diaries》(公主日记)中 有一段在海边聚餐的 三个女的一起出来唱的那首歌叫什么啊 《公主日记》中,国王在给Princess的日记本上的留言是?我要英语版,汉语大概意思是:勇气不是不再恐惧,而毋宁说发现.. 用c语言解该程序最长单词(50分,难度2,word.cpp)Time Limit:1000MS Memory Limit:65536KTotal Submit:716 Accepted:262Description输入一个英文句子,长度不超过200个字符.其中可包含的符号只有逗号","和句号".".输出句 求解一元三次方程的C语言程序 formal surfing attire 怎么翻译? 写你不理解父母或父母不理解你的作文,或写些你最想对父母说的话!可以 明天就要交了 高中英语要求记住多少单词啊?我该怎么做才能不费力的记住他们? 用一个成语的后两个字接下一个成语如:万众(一心)一意 成语接龙 明知故问……急!求2个 英语翻译这是新西兰大使馆给的签证所要填的表里面的问题这张表是Supplementary Application Form for Chinese Visitots,Students and Workers 美国监听行为激怒欧盟 欧盟各国首脑纷促政府兑现修路承诺 小镇妇女性罢工拒美国19岁学生欲徒步闯南极 14岁曾瑞典家具商为索马里难民提供塑料屋 手日本茨城县一金属加工厂爆炸 两员工严专家:消费升级人口基数大 中国车市仍美国北卡州狂欢活动发生意外事故 致5欧盟主席谈隐私 被称暗示美国搞监视是挪威拒绝美国请求 将不接收销毁叙利亚克里叹美政府关门损形象 他国外交官欲德一男子拒绝受审持枪劫持12名亲友终4月24日,中国首列市域快轨车辆在长分享智慧 启迪思维第三名遇难中国乘客奥巴马访日“没胃口”日美同意重启TPP部长级谈判大会实施一级保电春夏交替易发牙髓炎海南发展高尔夫旅游“4·22”交通事故原因碾轧隆隆响 侵权制品销可降低早产风险地狱公寓我心痴狂西游岁月召唤悍妞帝女人心不蛊异界邪魔战神抗日之快意恩仇夙夜宫声我的师父是王语嫣修真通行证延福寺旅游俞源太极星象村旅游郭洞旅游熟溪桥旅游观音峡旅游海埂大坝旅游金殿公园旅游石浦环港游旅游檀头山岛旅游月亮岛旅游弘福寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘