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

在Delphi中自动检测、建立数据库别名和表格

HTML文档下载 WORD文档下载 PDF文档下载
在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;

Delphi 3中Cookie的建立使用 Delphi 中 串 行 通 信 的 实 现 Delphi4.0 开发WEBMAIL程序 Delphi4的Winsocket编程 Delphi4开发WEBMAIL程序 Delphi编写网络程序的安全措施 DELPHI 和 THE INTERNET Delphi开发Web Server程序如何返回图像 Delphi开发Web Server程序响应用户的输入 DELPHI与INTERNET(二) DELPHI与INTERNET(一) Delphi中串行通信的实现 Email 服务器的简单实现-Delphi资料 Internet编程技巧-Delphi资料 SMTP组件的使用方法-Delphi资料 Web Server程序开发环境的建立-Delphi资料 WEB数据库的开发-Delphi资料 Win32 行程通讯的观念与技术-Delphi资料 编程发送E-mail-Delphi资料 调用那个函数得到本机的IP-Delphi资料 动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 任何动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 如何在程序中动态取得Win98的网络邻居中的工作组及计算机名-Delphi资料 动态设置DNS地址-Delphi资料 读取IE收藏夹内网址的信息-Delphi资料 改网络计算机名-Delphi资料 关于WEB应用程序的打印组件开发初探-Delphi资料 基于TELNET协议的DELPHI程序与LINUX主机通信的实现 监视POP3信箱-Delphi资料 开发WEBMAIL程序-Delphi资料 开发响应用户输入的数据库web Server-Delphi资料 发送的问题[初学] 数据表加密 关于DELPHI6操作INI文件的问题! 散分啦,快来抢分!谁能提供计算机中英文论文一篇,来者都必有分! 求银行家问题的C语言解法 请问,在中国,VC程序员的主要工作是什么? 菜鸟问题,ADO添加记录已经在浏览器上看到结果了,可是实际的ACCESS数据库却没变呢 怎么刷新整个窗口包括标题栏 订购了程序员全年杂志,不是送一本书吗?都已经出版这么久了,怎么还没有送过来呢?! 散分啦,快来抢分!谁能提供计算机中英文论文一篇,来者都必有分! 两个combobox关联显示(在线等) 关于我的yamaha 声卡在2003 不能用的问题 我用WIN98浏览器下载的文件都有错误。 Tomcat中的发行目录怎么设置! 初学者的问题. 关于最终用户许可协议 JPG图片怎么能实现部分透明? 如何用VB.net编写控件 关于ASP中对文本文件的skip(n)操作到底怎么做 关于SQL的菜鸟问题 大家现在用什么软件管理源代码啊。60分相送。 今年是考C 还是C++啊? 怎样判断一个线程已结束 我用new新建了若干个基类是cwnd的窗体cmywnd,然后想在每个窗体内定时让它们自己消失,我应该用什么函数?是destroywindow吗?最后还用不 vs.net 2003 中文版 的帮助MSDN是不是有问题? 清问这个SQL有什么错,还是FB1。0不支持? 是我的usb口的问题吗?? 怪事 急 路径绝对正确,为什么服务器只能下载rar 不能下载EXE 文件 已知,f(x)=arctanx,其二导f''(x)=(-2x)/(1+x*x)^2,f''(0)=0,试: 一个有趣的问题,请大家看一个小程序,来者有分。 这个写者优先是不是有问题????麻烦看一下,小弟实在看不出错在哪里 请问有没有办法得到[系统托盘]上其它程序的所显示的Icon?? 已知,十六进制(34.6)16=(28.75)10(十进制) 高手推荐几个Palm开发的网站?最好有源代码! 请教一个问题 触发器(加密)内容可以查看吗 怪,文件路径绝对正确,EXE文件不能下载,其它格式正常。 在编写的用户控件中公开所引用控件的事件怎么实现啊 这是我的usb口的问题吗? 考程序员前想先考全国三级,请问三级种哪个科目考C编程?何时报名? 调用DLL时候出现Bad Dll calling convention错误,为什么?代码如下 如何建立一个小数据库? 我想问下,网络技术到底是指什么??? 为什么会出现这个问题呢??急救??? 在不同操作系统出现不能正常运行的问题,和默认字体语系乱码问题 C# 静态类成员 新手请求各位前辈帮助 如何查询我连接到哪个数据库? 哭着请求帮助。。。。。页面显示问题!!在线等着 网络技术到底是指什么???? 我想在<<三国九>>里输入正确的中文,有法子么? 跳高姿势有哪五种? 甲光向日金鳞开的上句是什么不好意思啊,我一定会非常非常非常非常......的感谢你的 请问我有一只直流3V变压器想降到1.5V有啥办法. 如图所示,装有架子的小车,又细线拉着小球在水平地面上一起运动,已知运动中,如图所示,装有架子的小车,用细线拉着小球在水平地面上一起运动,已知运动中,细线偏离竖直方向30°,则小车加速 甲光向日金鳞开的前一句是什么? 盖斯定律的主要内容是什么?它对热力学基础发展有什么帮助?什么是盖斯定律,它能通过数学方法推导出来吗?3Q 请问下,家里的三基色灯管坏了,后来,我把镇流器不晓得也拆了.请问下镇流器怎么样对灯管? DNA限制酶切割DNA形成的末端有什么不同就是切割形成黏性末端是切割DNA哪里,切割形成平末端是切割DNA哪里.还有,一种限制酶能识别多少种核苷酸序列,然后产生什么. 急 新买的叉车 冷车时转向正常 热车时打不动轮 请大师来帮帮忙去年新买的三吨现代和三吨山推 现在都是这个毛病 大概车热半个小时后 就打不动轮 ,大泵 转向机 多流阀都调啦 一点用不管 三项四线漏电保护器怎么接下火线? 如图所示,装有架子的小车,又细线拉着小球在水平地面上一起运动,已知运动中,细线偏离竖直方向30°,试求小球的加速度 甲光向日金鳞开.上一句 一天上有十个太阳,为什么后羿只射下九个? 用铁皮做一个如下图所示的零件两头无盖这个零件的体积是多少 以前有没有姓于的皇上有没有姓于的皇上 都有谁? 天上有十个太阳为什么后羿只射下九个代表什么数字 光滑水平面上放有一木块,一颗子弹以速度v打向木块.为什么木块不会一直被子弹推动,光滑水平面啊 什么是盖斯定律 一物体在平行于斜面向上的恒力 F 作用下,由静止从底端沿光滑的斜面向...一物体在平行于斜面向上的恒力 F 作用下,由静止从底端沿光滑的斜面向 上做匀加速直线运动,经时间 t 力 F 做功为 60 植物标本都有什么作用? 盖斯定律 是什么? (1/3)一物体在平行于斜面向上的恒力 F 作用下,由静止从底端沿光滑的斜面向 上做匀加速直线运动,经时...(1/3)一物体在平行于斜面向上的恒力 F 作用下,由静止从底端沿光滑的斜面向 上做匀加 在表面光滑的小车上放两个小球均静止,当小车忽然水平向右运动时,两个小球相对与地面是静止的,为什么全解上的一道题,但怎么看都看不懂 横河川仪EJA智能变送器各型号特点和使用场合的详细说明有没有? 2-3的基因型为什么一定是aaBB 自律神经(自主神经,植物神经)受人体支配吗? 惟贤而戴者进,聚不肖而王者退 不肖的意思 “我”还能用什么语言?请进来比如说我还能用俺,吾,汝辈,哀家,朕,在下……请问还能用什么?不要重复我说的. 什么是标定地价 基本概念是什么 如图所示,在三角形ABC中,角ABC=90度,以AB上的点O为圆心,OB的长为半径的圆与AB交与点E,与AC切于点D(1)(1)求∠ADE=∠ABD 在中,原本天上有十个太阳,他射死了九个.请问那十个太阳的名字是什麽?有一个太阳如何逃过一劫?我好象看过一个版本,说最后一个太阳是因为躲在一棵植物后面才没有被射死,它是什麽啊? 数学B卷29题 如图,在三角形ABC中,角ABC=90度,o是AB上一点,以O为圆心,OB为半径的圆与AB相交于点E,与AC相切于点D,连接DB,DE,OC (1)从图中找出两组相似三角形.(2)在(1)中已找出来的两对相似三角 在三角形ABC中,角B等于90度,哦位AB上一点,以O为圆心,OB为半径的圆与AB交于点E,与AC切于点的,AD等于2,AE等于1,求CD长? 瓷器33欧姆J是电容还是电阻 如图 在三角形abc中,∠ABC=90°,点O是AB上的一点,一点o为圆心,OB为半径的圆与AB交于点E,与AC切于点D问﹕DE∥OC是否成立?请说明理由, mid、medium和middle的用法区别, 为什么电流表与用电器串联用电器不工作 英语翻译Hello first I wanna ask about size.In europe I am dressing Medium size but I think your size for US.So which one is fit for me.Also do you have Fenerbahce jersey (TURKISH TEAM) if you do not have I will buy different teams but if you have 在Rt三角形ABC中,角ABC=90度,以AB上的点O为圆心,OB的长为半径的圆与AB交与点E,与AC切于点D.求证:BC= 一颗子弹由枪口射出时的速率为V,当子弹在抢筒内被加速时,它所受合力为F=(a-bt).a,b为常数.(1)假设子弹运行到枪口处合力刚好为0,计算子弹走完枪筒全长所需时间(2)求子弹所受的冲量( 求翻译:hello,I want the clothes in size XL.NO MEDIUM.Thanks MEDIUM.MIDDLE.CENTER.CENTRAL的用法及区别 非惯性系问题计算物体相对于旋转参考系的加速度例:旋转参考系K(K相对于惯性系的角速度为ω)中有一质点A(A相对于K系静止)距参考系中心O长为R,在某一瞬间有这样一个质点P,P在OA延长线上OP=r 求翻译Do you know if your dad wear size medium or large on Ralph Lauren 懂叉车的进,电瓶叉车.充电之前按了一下紧急按钮,之后用钥匙开叉车...懂叉车的进,电瓶叉车.充电之前按了一下紧急按钮,之后用钥匙开叉车无任何反应,是怎么回事,连灯都不亮! 要怎么样限制酶才能完全切割 在初次分配中也要实现效率与公平的统一有何重大意义 相传后裔射九日,这九个太阳(或许不叫太阳)是不是分别有自己的名字?能不能简单介绍下九个太阳的去向? 限制酶切割什么序列? 如何理解斯大林模式,实现了效率与公平的统一 如何做到公平与效率二者并重? SmaI切割酶是什么 EJA变送器测量压力显示不准,如何检查 middle和medium表示尺码是应该用哪种?从字面意思上讲应该是medium,但中号为什么也用"middle-sized" 用同一种酶切割有几种重组质粒 EJA变送器短路 会烧坏吗 盖斯定律 合力1.8叉车故障码4.1是什么原因 甲光向日金鳞开 的前一句 给电池充电是正极接正极负极接负极还是正极接负极,负极接正极 棱镜门记者称自己必将返回美国 绝不因快车道上驶来雪橇车:老人驾车三只狗狗南京:学生上“普高职高融通班”可读大南京一男子酒后开车连撞5车被判缓刑南京六合区一农民因焚烧秸秆被治安拘留南京博物院耗资千万建成文物“医院”(穆尔西审判或引新流血冲突 当局似已胜国际新闻早报:土耳其出动战机拦截叙利Netfix测试4K超清视频 或于明中马友好合作关系不断向前推进--访中菲报:中国海基核威慑仍受制第一岛链克里中东之行访埃及 停留数小时修复两美国务卿克里访问埃及 承诺美将与埃过伊朗最高领袖称美是微笑的敌人 对核谈美研发新型间谍机 可一小时内到达全球泰国芭堤雅发生游船沉没事故 造成中国如何确保机密数据安全?把密码藏在潜意港媒:设计师为《人民日报》新大楼辩护中国如何从西方垃圾中获益港报:“伙伴关系”成中国重要外交工具浙江普陀山大型翡翠观音宝像开雕(图)新疆多措并举将“小儿科”提升为“大儿2016年六安商业贷款转公积金贷款额阿克苏:“三夏”时节割麦忙 住村工作沙湾县四道河子镇西大渠村的“热心肠”乌鲁木齐八一中学面向全国招34名中小裕民县红色旅游持续升温新疆宁夏今年8月将实现异地就医即时结全球最能挣钱的人:出生后日赚2800和布克赛尔技能培训办在牧民家门口乌鲁木齐儿童医院将投资10.74亿元吉木萨尔县精准发力棚改攻坚 居民获得吉木萨尔县试点“空间规划”探索“花儿乌苏市街道推进关爱空巢老人志愿服务常新疆沙湾县一微商被“供货商”骗17万福建龙岩援疆指挥部30万元助力呼图壁乌鲁木齐一小游园晚上变成“小吃园” 潍坊:苏打水现黄色漂浮物 厂家称或与孙伟到山东大学检查高考评卷工作信用卡现金分期5万元 选哪家银行更划新疆全面启用互联网预选机动车号牌业务乌苏市林业局获全国森林防火工作先进单
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘