发布BDE,我的笨方法(以Delphi5X为例)
自定义发布BDE
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
001::如何避免使用数据库别名
将数据库和程序摆在同一目录下,在DELPHI6里是自动识别的
在DELPHI5X里,只要将TABLE1.tableName输入一个表名即可。
直接输入路径+表名好象也行。
数据库别名就是给程序提供一个查找路径,在该路径下有tableName指定的表,
它保存在一个叫“IDAPI.CFG”的文件里,这个文件的具体路径可以运行控制面板
里BDE Administrator程序,看一下它的标题,它的标题就是“IDAPI.CFG”文件的路径。
要修改该路径很容易的,修改注册表即可。
进入注册表:开始/运行/REGEDIT/确定
定位到:HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Database Engine
在右边的窗口里有一个键值为“CONFIGFILE01”,
……
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
002::如何在程序中动态的生成数据库别名
首先要在窗体上添加一个TSession组件
并保证注册表的“HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Database Engine/CONFIGFILE01”
的键值指向“IDAPI.CFG”文件。
1. 检 测 别 名
通 过 调 用Session1.GetAliasNames(list:Tstrings) 方 法,
可 将 当 前BDE 配 置 中 的 所 有 数 据 库 别 名 的 名 称
存 放 到List 字 符 串 列 表 中。 list.IndexOf(' 需 要 检 测 的 别 名')
的 值 会 告 诉 我 们 这 个 别 名 是 否 存 在 ( 其 值 为-1 时 不 存 在)。
2. 增 加 一 个 新 的 别 名
Session 组 件 的 过 程AddStandardAlias(const Name, Path, DefaultDriver: string),
可 以 增 加 一 个 标 准 类 型 的 数 据 库 别 名。 例 如 增 加 一 个
名为test, 缺 省 数 据 库 驱 动 程 序 为 PARADOX,存 放 路 径 为c:/delphi 的 别 名
Session1.AddStandardAlias('test','c:/delphi','Paradox');
3.BDE 配 置 文 件 存 盘(保存到“IDAPI.CFG”)
Session1.SaveConfigFile;
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
003::如何确定你的程序需要哪些BDE文件的方法
首先要构造没有安装DELPHI的环境,不是将DELPHI卸了,
而是关闭DELPHI32.exe,将C:/……/Borland Shared/下的“BDE”文件夹改名为“BDE123”即可。
运行看看,是不是你的数据库程序已无法运行了,别着急啊。
接着,你必须在C:/……/Borland Shared/下新建一个文件夹,名为BDE,
将BDE123里的“IDAPI.CFG”拷贝到BDE下,其他文件不管。
再将BDE123里的所以文件拷贝到你数据库程序之下,
运行看看,你的数据库程序又正常运行了吧!
以下是关键的地方:
关闭你的数据库程序,删除一部分DLL文件,或其他文件
打开你的数据库程序,如果一切正常,那删掉的就是没有用的DLL文件啊。
如果不正常的话,那就是不能删除掉,赶快恢复过来吧!!
依次类推,直到删除哪一个都不行为止,那就达到最简化状态了。
环境恢复,将BDE123改为BDE
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
004::如何让你的数据库程序和所需的DLL文件关联。
不用修改注册表,只要把需要选择的文件和你的程序放在同一目录下也可以的
但是,在注册表中指定也不是个坏注意,在发现注册表中没有相应键值时写入
需要设置的注册表键值有:
数据驱动程序所在目录的设置:
HKEY_LOCAL_MACHINE/Software/Borland/Database Engine/DLLPATH(字符串值)
语言驱动程序所在目录的设置:
HKEY_LOCAL_MACHINE/Software /Borland/BLW32/BLAPIPATH(字符串值)
语言驱动程序文件名:HKEY_LOCAL_MACHINE/ Software/Borland/BLW32/LOCALE_LIB#(字符串值)
其中#为编号,按顺序为0、1、2、3......如:
HKEY_LOCAL_MACHINE/Software/Borland/BLW32/LOCALE_LIB0="fareasst.bll"
HKEY_LOCAL_MACHINE/Software/Borland /BLW32/LOCALE_LIB1="usa.bll"
数据库别名保存文件所在目录设置
HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Database Engine/CONFIGFILE01(字符串值)
就这些了,按此办法即可有效减少BDE驱动程序的大小,
这些文件可放在任何一个目录,只要在注册表指明即可。
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
我推荐用最简单的方法:
避免使用数据库别名,把所需的BDE文件和你程序放在同一目录下,也不要修改注册表,就什么都OK了。
或者干脆用ADO吧。
procedure TForm1.FormCreate(Sender: TObject);
var
a,b,c:String;
const
ConnStr = 'Provider=%s;Data Provider=%s;Data Source=%s';
begin
a:='MSDataShape.1';
b:='Microsoft.Jet.OLEDB.4.0';
c:='jsjaccdb.mdb';
if not ADOConnection1.Connected then
ADOConnection1.ConnectionString :=Format(ConnStr,[a,b,c]);
ADOTable1.Open;
end;
可以直接将和程序在同一目录下的'jsjaccdb.mdb'打开,
需要指定ADOConnection1.LoginPrompt为false;
需要指定ADOTable1.Connection,ADOTable1.TableName。
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
作者:wqhatnet/E-mail:wqhnet@hotmail.com//2004/01/12
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||