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

在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 下 调 试 通 过。

IBM推出Watson Analytics 将人机对话带进企业决策 参与2014中国移动开发者大调查 MDCC门票等你拿 手游开发经验谈:付费体系决定游戏收成好与坏? 惠普推出全新ProLiant Gen9服务器 腾讯安全出杀手锏 搭建全国最大Wi-Fi开放平台帮助网友免费蹭网 云与数据安全实践尽在ISC 2014(免费门票) 开源的对决,MapR将Apache Drill引入企业应用 令程序员费解的10个语言特性 走进雅虎北京全球研发中心:五年光阴缔造雅虎全球创新引擎 超强集成游戏编辑器!开源跨平台引擎Wave 求别再侵犯儿童隐私!FTC狠罚Yelp和TinyCo 华为应用市场助力开发者 软硬结合造就强大生态系统 【CTO俱乐部看板研修班北京站现场速递】看板方法:渐进变革的过程 《近匠》不背单词,用“沉浸”征服英语学习 ETpl——强复用、灵活、高性能的JavaScript模板引擎 MDCC 2014大会日程概览发布 最新嘉宾议题揭秘 终于来了,微信企业号正式开启公测! 【问底】王帅:深入PHP内核(一)——弱类型变量原理探究 谷歌Kubernetes专访:未来BigTable开发只是课后习题 首届“最具价值CTO”评选来啦!我们在找你! 【CTO俱乐部走进顺丰总部】活动图文直播进行中 中国第一个云主机评测发布:天翼云性价比第一、青云质量第一 Ruby 2.1.3发布,降低内存消耗、修复众多Bug! OpenHW2014开源硬件总决赛鏖战西安 AMD力推异构计算 《坦克世界:闪电战》:PC转手游,不止免费! 【讲师】道里云毛文波:网络虚拟化与SDN实现Docker连通 性能测试:SequoiaDB vs. MongoDB vs. Cassandra vs. HBase 华云数据推运营型PaaS Plus平台,联合Tmax走出“去IOE”的云化之路 聚焦移动新势力 MDCC 2014免费展位团队名单公布 详解Google Authenticator工作原理 云计算的乐高玩具,Docker从根本上改变应用程序开发 我的机子到底怎么回事???? 我试试.. CListCtrl中如何选定整个一行? 来到济南天气太热,特来送分 ★★★★★ 见于现在伪ID和盗用密码的现象十分嚣张,我提议…… ★★★★★ 请教各位,我用vb6.0访问ms sql7.0数据库,为什么有时出现,“过期,数据已超时?” 请问COM和DLL有什么区别和联系?(30分) 关于侯老师 win95-a-developers-guide 一书的源配书... ISAPI中不能存取ASP中的Session、Application变量?高手你老人家在哪里? 大家来看看这些招聘题目合不合适 提一个网页制作的问题哈,大家不要扔西红市啊,网叶制作可是程序员的基本技能之一 activeskin里的skinbuilder有谁用过???来讨论吧 我在msdn上看到vb中的字符串有两种:定长字符串和变长字符串。请问如何分别声明这两种类型? 怎样在ADO中引用已打开的recordset的某一字段值,请给几个例,谢谢了! seedundersnow and holyfire help me!about 8253! 谁有cute ftp 4.2.6 beta的注册码 请问如何把页面查询到的记录导入到Excel中呢? 有用过TAdvStringGrid的吗?OnGetEditorType( )为何不被调用? 请教高手如何用Xsl编制函数控制Xml??急急 哪位给一个MD5的例子!谢谢了 长春的李延生来领分 求救:一个VC中多线程的问题 提个问题,原来对VC尤其是界面和C++语法这一块比较熟,现在由于公司需要转C++BUILDER,难不难,需要熟悉哪些 [总300分,会继续加分]哪位大哥用编程实现过创建SQL Server的DTS package并且run the package的全过程[急] 能不能使用html 压缩中提到的文件头有什么作用 , 保含哪些信息 菜鸟问题1 提一个网页制作的问题哈,大家不要扔西红市啊,网叶制作可是程序员的基本技能之一。。。。。。。 关于:import java.util.StringTokenizer; 问题! 如何实现在某特定时间(如每月1号,或7天后)执行特定asp程序? 在开发工具中如:(vc,jsp)中如何得到oracle中自定义函数的返回值 当form被移动的时候会相应什么事件的? 关于使用mscomm32.ocx中的一些问题 类似股票信息显示系统的问题(图形显示) 强烈抗议:无怨无仇,为什么冒用我的ID 写一些乱七八糟的东西????? 一个简单的线程问题! 请问高手:两个类之间的关联关系如何实现? 各位请问, 我的系统要求支持三种语言, BIG5,GB2312,ENGLISH,数据库应该怎样设计!! 求救!!!vfp ,控件 optiongroup1, 属性 ButtonCount=N,如何给第N个OPtionN.Caption赋值 假如上天给你一个机会。。。请看过来。。。 如何配置IIS 使其利用TOMCAT 支持JSP AND SERVLET ? 请问:ORACLEH中保存每列的数据类型的系统表名叫什么? !!这个简单的问题,没解决!!!给分!! 对公的帐号不能向私人帐号汇钱,怎么办? wm_keydown 中 wparam 和 Lparam 中高位和低位所表示的意思是何东西 我用 ADO 从数据库里读数据,当记录实在太多了的时候就死机了,该怎么办? 笨问题:JAVA如何设置全局变量,要在所有的类和整个程序中有效 如何重画dbctrlgrid的每个panel? 浏览并选择路径的对话框的函数是什么? 程序化的爱情 如何编程实现断开共享目录, 设X1,X2是一元二次方程X²+4X-3=0的两个根,2X1(X2²+5X2-3)+a=2,则a=? x平方-3[2x-5(x平方-x+1)] 3+2+5+1+8+3+6+4+125=? 计算:1的平方-2的平方+3的平方-4的平方+5的平方-6的平方+...+2001的平方-2002的平方+2003的平方-2004的平方. (x+5)的平方-(x-2)(x-3) 从401到1000的所有整数中,被8除余数是1的数有( )个.快哦, 1.(2√3-3√2)的平方 2.(3√5+2√6)(2√6-3√5)3.√2(√2-√6)+(1+√3)(1-√3)4.(2√3-3√2)(2√2+√3) 如果3x的平方-2x=2,求(x的平方+5)-2(-2的平方+x+3)的值 一个整数被6除余2,被7除余3,从1到1000中,求这样数的个数,并求它们的和.【请用数列的方法】 (x+2)(x-3)-2(x-6)(x+5)-3(x平方-5x+17),x=5.5 若2÷(3*x的平方+2x+5)的值为1/3,则1/(6*x的平方+4x+1)的值为? 求在200-1000之间所有能被5除余3,被7除余5,被9除余7的数之和 (1/2-3+5/6-7/12)*(-6)的平方 100x9.5x0.98+9.5x2简便运算 求200到 1000之间所有能被4除余3,被7除余4,被9除余2的数之和 1=1的平方 1+3=2的平方 1+3+5=3的平方 14/5-(3.5x2/7+3.2x1/4)(简便计算) 利用vb一级 编写程序,求在10~1000之间所有能被4除余3,被7除余5,被9除余2的数之和. (√5+1)(√5-1)= (2-√ 7)(√7+2)= (2√3+1)平方 (7-√3)(2√3+1)=(√5+1)(√5-1)= (2-√ 7)(√7+2)= (2√3+1)平方=?(7-√3)(2√3+1)= 7.5X2.1+75Xo.79怎样简便运算 1至1000的数码之和是多少? -4的平方+3×(-2)的平方+(-5)÷(-3分之1)的平方 l.5x一x=5X2 从1到1000,这1000个数的数码之和是多少?(如987的数码之和是24) 观察1的平方+2的平方>2*2*1 3的平方+5的平方>>>> 0.64x12.5x2.5x2简便计算 从1到1000,这1000个数的数码之和是多少德国大数学家高斯曾经巧妙地算出1加到一百结果是5050(怎么算知道吧)看看这个问题与故事中的问题有哪些相同的地方,并求值.2.将1至9这九个数分别填 1+2+3+4+5+6的平方 小豪在求一个多项式与2x2-3x+7的差时,因错看成加上2x2-3x+7,而得到答案-5x2+2x-7.试求此题的正确答案 从1到1000,这1000个数的数码之和是多少求出问题的值 ,算式 杨辉三角形有什么规律? 一个多项式加上5x2+3x-2的2倍得1-3x2+x,求这个多项式x后的2代表x的平方 在一列数1 2 3 4.1000中,数字零出现了几次 谁能帮我讲一下杨辉三角 我数学不好,有点看不懂,有一道例题(x+2)^5 我想知道系数确定了,剩下怎么办 一个多项式加5x2+3x-2的2倍得1-3x2+x,则这个多项式是 在下列数1 2 3 4...,1000中,数字零出现的次数是多少 谁能告诉我杨辉三角中有哪些数学规律啊~~~ 大家帮帮忙了哦~!~~! (3X3+5X2+X)/(7X3+5X-4) 1—1000中,数字1出现了几次 2x一10二4.5x2怎么算? 数学上杨辉三角怎么运用?如求(a+b)^4 ,(a+b)^5 ,(a+b)^6等,怎么运用杨辉三角来简便运算?(系数我懂,是依次来的,可问题是那些字母的幂数是怎么安排的?)也可以举几个例子让我看懂就好, 1000~1999这1000个整数中数字1一共出现了多少次 (负1减二分之1)乘(负1减3分之1)乘.乘(负1减10分之1) 椭圆5x2+ky2=5的一个焦点为(0,2).求k的值这是一道椭圆方程题,请书写全过程. 0到1000中,有多少个整数包含数字1,2,3和4?用《离散数学》 的 集合代数 方法做!这问题困扰我两个多星期了。不要:1001-(6+5*6+5*6*6)=785 这个。 (负3又3分之2)十(负6分之一)= 点(0,4)是椭圆3KX2+KY2=1的一个焦点 求k 整数1用了一个数字,整数10用1和0两个数字,从一到1000一共用了多少个1和多少个0,其中用mid cstr len 函数 (负1.3)十[负4(负2负7)]= 椭圆8k2x2-ky2=2的一个焦点为(0,√7)求k的值.书里面没有过程的答案是:k=-1或-1/7再次抱歉!题应该是8k2x2-ky2=8我毫无怨言! 从零到999这1000个整数中,共有多少个数字1呢? 数学题所有的要过程3/5X2/11+2/11÷5/2 48X(1/2+5/6+3/8) 2又5/8X9.25+7又3/8X9又1/47/9÷11/8X(1/4+2/3) 7/18÷[(5/7-1/3X7/16] 请不要嫌麻烦 若椭圆2kx2+ky2=1的一个焦点为(0.-4),则k的值为 1到1000的整数,所有数的各位数字加在一起等于多少?如 1000:1999:27...系统坏了, 利用EXCEL确定x3-5x2-4x+6=0近似解?1)x为-9、-8、-7、-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、6、72)x为-1.6、-1.5、-1.4、-1.3、-1.2、-1.1、-1、……、0.6、0.7、0.8、0.9、1、1.1、……、5.2、5.3、5.4、5.5 已知F是椭圆5x2+9y2=45的左焦点,P是此椭圆上的动点,A(1,1)是一定点,求|PA|+3/2|PF|的最小值,并求点P的坐标 从1到1000的整数中任取三个数从1到1000中任取三个数,有序三组数(x,y,z),求x^2+y^2+z^2被7整除的有序三组数(x,y,z)的组数(x,y,z可以相等) 设x1、x2是一元二次方程x^2+4x-3=0的两个根,2x1(x2的平方+5x2-3)=_____ 3(x+1)的平方-5(x+1)=2怎么解 3/8×7+1÷8/3 3/5-3/7+2/5-4/7 (1/125+4/5)×125 1/2+93/8×7+1÷8/33/5-3/7+2/5-4/7(1/125+4/5)×1251/2+9/20÷9/10-5/8
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn