如何用BDE动态与后台数据库连接? 1.你可以用Tdatabase控件进行动态连接2.你可以将database1.LoginPrompt:=false; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Tdatabase怎么进行动态的连接? 在TABLE的TABLENAME里设置成DATEBASE的NAME就可以了 贴一篇给你看---- Delphi3 内 建 的Borland 数 据 库 引 擎(BDE), 使Delphi3 程 序 能 通 过 数 据 库 别 名(Database Alias) 十 分 方 便 地 访 问 各 种 类 型 的 数 据 库。然 而, 数 据 库 别 名 的 建 立、 修 改、删 除 等 维 护 工 作,需 要 在 BDE Administrator 中 进 行, 数 据 库 中 实 际 表 格 结 构 的 建立 和 维 护, 有 时 也 要 在DataBase Desktop 中 完 成, 这 给 用 户 增 加 了 不 少 困 难。 有 没 有 办 法 让 用 户 不 去 执 行BDE Administrator 和DataBase Desktop 这 两 个 应 用 程 序, 就 可 直 接 检 测、 建 立 数 据 库 别 名 和 库 中 的 表 格 呢 ? 笔 者 通 过 探 索, 得 到 了 一 种 可 行 的 方 案, 现 以 笔 者 所 开 发 的 一 个 单 机 版 的 图 书 资 料 管 理 系 统 为 例, 简 要 加 以 说 明。 ---- 一、 数 据 库 别 名(Alias) 的 定 义 和 检 测 方 法 ---- 当Type 为STANDARD 时, 别 名 定 义 最 为 简 单, 这 时 仅 能 采 用PARADOX, DBASE,ASCIIDRV 三 种 数 据 库 作 为 缺 省 的 驱 动 程 序(DEFAULT DRIVER)。 ---- 另 外, 还 要 定 义 数 据 库 存 放 路 径(PATH) 和ENABLE BCD, 才 能 建 立 一 个 完 整 的 数 据 库 别 名。 ---- Delphi 的 数 据 库 应 用 程 序 能 自 动 提 供 一 个Session 组 件, 这 个 Session 组 件 即 为 应 用 程 序 与BDE 的 接 口。 ---- 1. 检 测 别 名 ---- 通 过 调 用Session.GetAliasNames(list:Tstrings) 方 法, 可 将 当 前BDE 配 置 中 的 所 有 数 据 库 别 名 的 名 称 存 放 到List 字 符 串 列 表 中。 list.IndexOf(' 需 要 检 测 的 别 名') 的 值 会 告 诉 我 们 这 个 别 名 是 否 存 在 ( 其 值 为-1 时 不 存 在)。 ---- 2. 增 加 一 个 新 的 别 名 ---- Session 组 件 的 过 程AddStandardAlias(const Name, Path, DefaultDriver: string), 可 以 增 加 一 个 标 准 类 型 的 数 据 库 别 名。 例 如 增 加 一 个 名 为Cntssamp, 缺 省 数 据 库 驱 动 程 序 为 PARADOX、 存 放 路 径 为c:\delphp11 的 别 名: ---- Session.AddStandardAlias('Cntssamp','c:\delphp11','Paradox'); ---- 3.BDE 配 置 文 件 存 盘 ---- Session.SaveConfigFile; ---- 二、 数 据 库 中 表 格 的 定 义 和 检 测 方 法 ---- 数 据 库 中 表 格 的 定 义、 维 护 和 使 用, 只 有 在 数 据 库 别 名 正 确 设 置 的 情 况 下 才 有 意 义。 以TTable 组 件 为 例, 必 须 设 置 其DatabaseName 为 一 个 实 际 存 在 的 别 名。 ---- 1. 检 测 表 格 是 否 存 在 ---- 通 过 调 用Session.GetTableNames(const DatabaseName, ---- Pattern: string; Extensions,SystemTables: Boolean; List: ---- TStrings) 方 法, 可 将 当 前 指 定 数 据 库 别 名 中 所 有 表 格 的 名 称 存 放 到 List 字 符 串 列 表 中。list.IndexOf(' 需 要 检 测 的 表 格 名') 的 值 会 告 诉 我 们 这 个 表 格 是 否 存 在( 其 值 为-1 时 不 存 在)。 ---- 2. 建 立 一 个 表 格 ---- 第 一 步, 设 置TTable 组 件 的DataBase Name( 别 名)、TableName ( 表 格 名)、TableType( 数 据 库 类 型); ---- 第 二 步, 调 用Table.FieldDefs.Add(const Name: string; ---- DataType: TFieldType; Size: Word; Required: Boolean) 增 加 表 格的 各 个 字 段, 其 中Name 为 字 段 名,DataType 为 字 段 类 型( 常 用 的 有 ftInteger,ftString,ftDate,ftBoolean 等),Size 为 字 段 长 度, Required 为 该 字 段 是 否 允 许 有 空 值。 ---- 第 三 步, 调 用Table.IndexDefs.Add(const Name, Fields: string; Options: TIndexOptions) 方 法 增 加 表 格 的 索 引 文 件, 其 中 Name 为 索 引 文 件 名,Fields 为 索 引 字 段,options 为 索 引 参 数 的 集 合, 常 用 的 索 引 参 数 有ixPrimary( 主 键)、 ixDescending( 降 序)、 ixUnique( 具 有 唯 一 值) 等。 ---- 第 四 步, 调 用Table.CreateTable 建 立 表 格。 ---- 三、 一 个 实 例 ---- 在Form1.Formcreate 事 件 中 写 入 如 下 代 码, 程 序 启 动 时, 将 自 动 检 测 是 否 存 在 数 据 库 别 名Cntssamp, 如 果 没 有 则 建 立 之; 自 动 检 测 别 名Cntssamp 中 是 否 存 在 表 格TSK( 图 书 库), 如 果 没 有 则 自 动 建 立 表 格TSK。 procedure TForm1.FormCreate(Sender: TObject);varap:TStringList; {字符串列表变量}answer:Integer;beginap:=TStringlist.Create;Session.GetAliasNames(ap); {取得别名列表}if (ap.IndexOf('Cntssamp')=-1) then {判断别名是否存在}beginanswer:=Application.MessageBox('别名Cntssamp不存在,现在创建吗?','BDE信息窗口',mb_OKCancel);{增加一个名为Cngzsamp的数据库别名}if answer=IDCANCEL then beginap.Free;Exit;end;Session.AddStandardAlias('Cntssamp','c:\delphp11','Paradox');Session.SaveConfigFile; {BDE配置文件存盘}end ;ap.Clear; {取得别名Cngzsamp中的所有表格名称列表}Session.GetTableNames('Cntssamp','',False,False,ap);if (ap.IndexOf('TSK')=-1) then {判断表格是否存在}beginanswer:=Application.MessageBox('别名Cntssamp中不存在表格TSK,现在创建吗?','表格信息窗口',mb_OKCancel);if answer=IDCANCEL then beginap.Free;Exit;end;with table1 do beginActive:=false;DatabaseName:='Cntssamp'; {数据库别名}TableName:='TSK'; {表格名}TableType:=ttParadox; {数据库类型}with FieldDefs do begin {增加字段}Clear;Add('SH',ftString,30,False); {书号 String(30)}Add('SM',ftString,30,False); {书名 String(30)}Add('CBS',ftString,20,False); {出版社 String(20)}Add('CBRQ',ftDate,0,False); {出版日期 Date}Add('YS',ftInteger,0,False); {页数 Integer}end;with IndexDefs do begin {增加索引}Clear; {按书号字段建立主索引}Add('SHSY','SH',[ixPrimary,ixUnique]);end;CreateTable; {创建表格}end;end ;ap.free; {释放变量ap}end; 在运行期间先将database控件的active=false然后将database控件的database name改为你想要连接的数据库名即可。不要密码楼上的仁兄已提到 inno setup [code] 段问题 请问那一款摄像头带二次开发程序包? 关于单元的问题,请大家关注一下。 简单问题,在线等待! 从ADOQUERY导出数据到EXCEL,怎么解决表头单元格的合并问题。谢谢! 求高手!!!急!急!急!!!! 不知道这是什么错误!!! 关于MDI出现的问题>.... 请问李维出了哪些书?在书店(大陆)有售吗?有没有电子版下载? 哪儿有下载一个《delphi4核心编程技术》 有大连的delphi程序员吗? 各位前辈,我有一个很好的创意,无奈受自身水平所限,空有其心无有其力.这是一个大的工程,请进听小生慢慢道来!!!!
---- Delphi3 内 建 的Borland 数 据 库 引 擎(BDE), 使Delphi3 程 序 能 通 过 数 据 库 别 名(Database Alias) 十 分 方 便 地 访 问 各 种 类 型 的 数 据 库。然 而, 数 据 库 别 名 的 建 立、 修 改、删 除 等 维 护 工 作,需 要 在 BDE Administrator 中 进 行, 数 据 库 中 实 际 表 格 结 构 的 建立 和 维 护, 有 时 也 要 在DataBase Desktop 中 完 成, 这 给 用 户 增 加 了 不 少 困 难。 有 没 有 办 法 让 用 户 不 去 执 行BDE Administrator 和DataBase Desktop 这 两 个 应 用 程 序, 就 可 直 接 检 测、 建 立 数 据 库 别 名 和 库 中 的 表 格 呢 ? 笔 者 通 过 探 索, 得 到 了 一 种 可 行 的 方 案, 现 以 笔 者 所 开 发 的 一 个 单 机 版 的 图 书 资 料 管 理 系 统 为 例, 简 要 加 以 说 明。 ---- 一、 数 据 库 别 名(Alias) 的 定 义 和 检 测 方 法 ---- 当Type 为STANDARD 时, 别 名 定 义 最 为 简 单, 这 时 仅 能 采 用PARADOX, DBASE,ASCIIDRV 三 种 数 据 库 作 为 缺 省 的 驱 动 程 序(DEFAULT DRIVER)。 ---- 另 外, 还 要 定 义 数 据 库 存 放 路 径(PATH) 和ENABLE BCD, 才 能 建 立 一 个 完 整 的 数 据 库 别 名。 ---- Delphi 的 数 据 库 应 用 程 序 能 自 动 提 供 一 个Session 组 件, 这 个 Session 组 件 即 为 应 用 程 序 与BDE 的 接 口。 ---- 1. 检 测 别 名 ---- 通 过 调 用Session.GetAliasNames(list:Tstrings) 方 法, 可 将 当 前BDE 配 置 中 的 所 有 数 据 库 别 名 的 名 称 存 放 到List 字 符 串 列 表 中。 list.IndexOf(' 需 要 检 测 的 别 名') 的 值 会 告 诉 我 们 这 个 别 名 是 否 存 在 ( 其 值 为-1 时 不 存 在)。 ---- 2. 增 加 一 个 新 的 别 名 ---- Session 组 件 的 过 程AddStandardAlias(const Name, Path, DefaultDriver: string), 可 以 增 加 一 个 标 准 类 型 的 数 据 库 别 名。 例 如 增 加 一 个 名 为Cntssamp, 缺 省 数 据 库 驱 动 程 序 为 PARADOX、 存 放 路 径 为c:\delphp11 的 别 名: ---- Session.AddStandardAlias('Cntssamp','c:\delphp11','Paradox');
---- 3.BDE 配 置 文 件 存 盘 ---- Session.SaveConfigFile; ---- 二、 数 据 库 中 表 格 的 定 义 和 检 测 方 法 ---- 数 据 库 中 表 格 的 定 义、 维 护 和 使 用, 只 有 在 数 据 库 别 名 正 确 设 置 的 情 况 下 才 有 意 义。 以TTable 组 件 为 例, 必 须 设 置 其DatabaseName 为 一 个 实 际 存 在 的 别 名。 ---- 1. 检 测 表 格 是 否 存 在 ---- 通 过 调 用Session.GetTableNames(const DatabaseName, ---- Pattern: string; Extensions,SystemTables: Boolean; List: ---- TStrings) 方 法, 可 将 当 前 指 定 数 据 库 别 名 中 所 有 表 格 的 名 称 存 放 到 List 字 符 串 列 表 中。list.IndexOf(' 需 要 检 测 的 表 格 名') 的 值 会 告 诉 我 们 这 个 表 格 是 否 存 在( 其 值 为-1 时 不 存 在)。 ---- 2. 建 立 一 个 表 格 ---- 第 一 步, 设 置TTable 组 件 的DataBase Name( 别 名)、TableName ( 表 格 名)、TableType( 数 据 库 类 型); ---- 第 二 步, 调 用Table.FieldDefs.Add(const Name: string; ---- DataType: TFieldType; Size: Word; Required: Boolean) 增 加 表 格的 各 个 字 段, 其 中Name 为 字 段 名,DataType 为 字 段 类 型( 常 用 的 有 ftInteger,ftString,ftDate,ftBoolean 等),Size 为 字 段 长 度, Required 为 该 字 段 是 否 允 许 有 空 值。 ---- 第 三 步, 调 用Table.IndexDefs.Add(const Name, Fields: string; Options: TIndexOptions) 方 法 增 加 表 格 的 索 引 文 件, 其 中 Name 为 索 引 文 件 名,Fields 为 索 引 字 段,options 为 索 引 参 数 的 集 合, 常 用 的 索 引 参 数 有ixPrimary( 主 键)、 ixDescending( 降 序)、 ixUnique( 具 有 唯 一 值) 等。 ---- 第 四 步, 调 用Table.CreateTable 建 立 表 格。 ---- 三、 一 个 实 例 ---- 在Form1.Formcreate 事 件 中 写 入 如 下 代 码, 程 序 启 动 时, 将 自 动 检 测 是 否 存 在 数 据 库 别 名Cntssamp, 如 果 没 有 则 建 立 之; 自 动 检 测 别 名Cntssamp 中 是 否 存 在 表 格TSK( 图 书 库), 如 果 没 有 则 自 动 建 立 表 格TSK。 procedure TForm1.FormCreate(Sender: TObject);
var
ap:TStringList; {字符串列表变量}
answer:Integer;
begin
ap:=TStringlist.Create;
Session.GetAliasNames(ap); {取得别名列表}
if (ap.IndexOf('Cntssamp')=-1) then {判断别名是否存在}
begin
answer:=Application.MessageBox(
'别名Cntssamp不存在,
现在创建吗?','BDE信息窗口',mb_OKCancel);
{增加一个名为Cngzsamp的数据库别名}
if answer=IDCANCEL then begin
ap.Free;
Exit;
end;
Session.AddStandardAlias
('Cntssamp','c:\delphp11','Paradox');
Session.SaveConfigFile; {BDE配置文件存盘}
end ;
ap.Clear; {取得别名Cngzsamp中的所有表格名称列表}
Session.GetTableNames
('Cntssamp','',False,False,ap);
if (ap.IndexOf('TSK')=
-1) then {判断表格是否存在}
begin
answer:=Application.MessageBox(
'别名Cntssamp中不存在
表格TSK,现在创建吗?','表格信息窗口
',mb_OKCancel);
if answer=IDCANCEL then begin
ap.Free;
Exit;
end;
with table1 do begin
Active:=false;
DatabaseName:='Cntssamp'; {数据库别名}
TableName:='TSK'; {表格名}
TableType:=ttParadox; {数据库类型}
with FieldDefs do begin {增加字段}
Clear;
Add('SH',ftString,30,False); {书号 String(30)}
Add('SM',ftString,30,False); {书名 String(30)}
Add('CBS',ftString,20,False); {出版社 String(20)}
Add('CBRQ',ftDate,0,False); {出版日期 Date}
Add('YS',ftInteger,0,False); {页数 Integer}
end;
with IndexDefs do begin {增加索引}
Clear; {按书号字段建立主索引}
Add('SHSY','SH',[ixPrimary,ixUnique]);
end;
CreateTable; {创建表格}
end;
end ;
ap.free; {释放变量ap}
end;
不要密码楼上的仁兄已提到