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

在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;

【先锋】完成B轮融资的TalkingData新商业模式:平台理念+跨界分析+技术开源 1/10计算资源,1/3耗时,Spark颠覆MapReduce保持的排序记录 Cookie已死,看Facebook、Google、Apple如何追踪用户 Clay.io基于AWS、Docker、HAProxy等的10X架构打造 经典服务/企业号案例来袭!2014微信开发者大会(深圳)亮点抢先看 移动应用云APICloud宣布完成A轮500万美金融资 从Apache Storm学到的经验教训 【CTO俱乐部走进天津】探讨如何成为技术团队管理者 不容错过!参加MDCC 2014移动开发者大会八个理由 你的钱被洗劫了么!APP安全问题来袭 10大最常见的数据库安全问题 南航微信服务号是如何炼成的? 超40项功能改进,虚幻引擎4.5正式发布! 【工具推荐】ER:可轻松构建一站式AJAX Web应用的开发框架 GraphLab:将大数据分析从理念运用到生产 支持Android 5.0:完全用Ruby的Ruboto框架迎1.2.0更新! 万物互联第一步:采用AllJoyn技术的智能硬件 【专访】敏捷专家何勉:让测试成为拉动组织敏捷实施的力量 Docker与微软合作 支持Windows Server 企业号热问热答——来深圳微信开发者大会聆听一线讲师的实战分享 AngularJS 1.3.0正式发布 超光速发展! 学个痛快!十款不容错过的Swift iOS开源项目 HTML5:助力智能电视生态实现新跃迁 MDCC 2014移动开发者大会公布全部议程 求更密集!Apple Watch SDK将于11月正式开放 【答疑】微信开放平台开发者资质认证 专访Informatica亚太和日本区副总裁Murray Sargant:中国公司正考虑数据资产货币化 Facebook又开源:让iOS应用界面极致流畅的ASDK框架 一周消息树:盘点史上最具毁灭性的软件Bug 微信公众平台设备功能支持个人开发者接入 2014中国移动开发者大调查第三批获奖名单曝光 SQL查询 紧急求教!! 孤独的SB——写给水园的死者. 请问如何在一个SQL的Select中得到一个Boolean字段的中文名称? outlook如何载入来自文本文件的大量邮件地址列表 请问我想吧dbgrid里面的内容保存到一个string变量里面怎么做, net中ToolbarItem集合编辑器使用 怎么得到ms sql server的本地实例(或服务)列表? IIS如何控制目录访问权限? asp.net 我不懂的问题,不是很难啊。 有关mysql出错的问题?? 牛人们,帮我看看~~~~~~ 调试INTERDEV中的PROJECT? 请问 GetCellDigital返回值有误 目录树记忆属性实现的讨论 关于用户自定义类的问题 自制控件问题 静态链接库中的资源 Xml的查询定位问题? 小高求助! 关于JAVA文件执行时出现的错误 如何在Datagrid中取得当前记录的某字段值? 如何取得下拉菜单项? 目录树记忆属性实现的讨论 我想去中国网通申请域名,他们是不是很吊,有没人用过啊 Help 删除一条记录?? 在研究软件加密 “咱们把最好的粮食给城里人吃,又进城帮助他们盖起了高楼大厦,他们为什么还瞧不起我们呢?” 老板今天叫我签合同 有关于TImage的图像显示速度 怎样让 Title 的显示时间延长????????? !!!!!!!!!格式化数据列 怎么这么慢啊 请问:如何在打印之前设定该次打印纸张的大小(很急,老板催货了,帮忙顶一下,谢谢)? 有什么办法可以把class文件反编译回java文件? 如何写到文件? 自己写一个函数,把2,3,4加到1,2,3中去,不重复 Netscape打印中文网页为什么不成功? 英文XP中装了东亚语言包,能显示中文了,如何输入汉字呢。。。。 接到一个电话 哪位大哥大姐教教我啊? Dll如何同控制台程序通信 RedHat Linux7.2下如何挂上RealTek8139网卡驱动????高分相送哦!在线等待!!! TreeView问题 求register_globals = On和register_globals = Off的不同用法(原代码) 斑竹,我是因为升级才散分的,有个穿红裤衩的支持俺了…… 一个新手的加急求救!谁先回答,就先给谁份,希望大家说的详细点! 写xml文件的不完整的问题 关于esqlc的unload 的问题。 关于方法覆盖,在线等候 不完全液体润滑滑动轴承的主要失效形式是什么? 动压润滑和静压润滑有什么优缺点,比如:如果动压润滑,在启动时会不会产生干摩擦,启动后才能产生油膜 现在我们有3、4二氯硝基苯这种材料,请问能生产出几种产品,需要和哪些材料反应呢? 液体摩擦滑动轴承的计算应限制什么?为什么? 数字式万用表的表笔是红正黑负吗?以前用指针万用表,电阻档黑表笔接的是电池正极,听说数字式万用表电阻档的表笔正负和指针表极性是相反的, 在一个密闭容器内,植物进行光合作用之后生成了氧气消耗了二氧化碳能否再利用生成的氧气进行有氧呼吸如果是不就意味着循环利用了吗,那样的话植物能存活多久,回答好的重重有赏,哈哈 梅子留酸软齿牙,芭蕉分绿与窗纱.日长睡起无情思,闲看儿童捉柳花.的意思 万用表上面COM口接黑表笔还是红表笔? 以“夫”和“泣”为例,分别探索它们的意义 依据浙江省暑假作业语文P3参考回答 如何验证溶液中含有亚铁离子? 解释下文化是什么?最好是举例说明, 汉字与理性“夫”的意义 属于光反射现象的是 A 小孔成像 B 激光引导掘进机沿直线前进 C 在地球上可以看到日食和月食 D 教室里不同位置的同学都可以看到黑板上的字 100年后我们的生活会是什么样呢怎么翻译?what will our lives be like in 100 years?ORwhat our lives will be like in 100 years? 磁铁为什么会将电池的电力吸走?是因为什么原因会造成这种现象? 日长睡起无情思,闲看儿童捉柳花.描写哪个季节? 你怎么认为100年后,生活会是什么样 动物避暑 [多选题]1.下列各项中,属于要约邀请的有(  ).[多选题]1.下列各项中,属于要约邀请的有(  ).A.规定投标人应具有特定资质条件的招标公告B.某公司向一商业伙伴寄出的自己已经签字盖 你认为100年后的生活会是怎样的 英语 网络类型里的“外A”“内C”什么意思? 在U型磁铁有两个的情况下,进行切割磁感线运动会有电流产生吗?但是如果人为地将两个U型磁铁同极与同极地捆在一起,然后进行切割磁感线运动,会出现什么情况? 商业广告在什么情况下属于要约,在什么情况下属于要约邀请?越详细越好!谢谢啦! 十二烷基苯磺酸可以用乙醇溶解吗十二烷基苯磺酸与乙醇在水中会发生酯化反应吗 我经常在cnbeta里到新闻后的评论总会扯到景德镇,使用率还很高,说瓷都什么的就别回了,地球人都知道有那个个地方. 磁场和引力磁场的实体存不存在,如果存在请回答下列问题,如果不存在请说明理由.当人类能把不能再分的原子打出了质子,中子,电子,甚至跨克时,我们不得不怀疑物质的组成本质到底是什么, 十二烷基苯磺酸溶于哪些有机溶剂? 景德镇的陶瓷、特别薄、请问属于哪一种类?RT另:这种属不属于薄胎瓷?特薄特轻……现在这种大概值多少钱、 已知电压220v功率4800w求电流. 请举例说明招投标的意义.一定要举例说明,一定要举例说明. 巴勒斯坦和梵蒂冈为什麽是联合国观察员国?是联合国观察他们还是他们挂差联合国? 电脑端有没有检测电压的软件.检测家庭电压的.我怀疑电压严重低于220V 招标有几种方式 分别介绍其含义 巴勒斯坦真正立国的时间是什么时候.最近他们成了联合国观察员,说明已经被世界认可,但什么时候立的国. 求相关合同法多选题答案多选1.甲方违约,给对方乙造成损失15万元,合同规定违约金比例为货款总额的10%,货款总额为200万元,则下面的说法不正确的是()A.甲应赔偿乙15万元B.甲应赔偿乙200万 企业想购买一台旧家电,自用证明怎么写 巴勒斯坦为什么只是观察员国地位他不早就是了吗 一道关于合同法保证的选择题 多选甲向乙借款5万,乙要求甲提供担保,甲分别找丙,丁,戊,己,下列构成保证的是A 丙在借据上签署“保证人丙”B丁向乙出具字据“如甲到期不向乙还款,本人愿代 西亚北非局势与当前国际关系态势,马哲的作业, 巴勒斯坦凭什么加入联合国 诸葛亮上知天文,阴谋诡计,周瑜自愧不如.(修改病句) 26.一切唯心主义的共同观点有( )①把精神看作世界的本原 ②主张社会意识决定社会存在 ③认为世界万物是“感觉的复合” ④认为世界是不可知 ⑤认为绝对精神产生万物[ 1分] A.①③⑤B. 英国为什么反对巴勒斯坦加入联合国?模拟联合国大会要用到.代表英国,议题为巴勒斯坦的入会问题.麻烦大家了.我急用.请尽量从英国的角度回答这个问题.可以官方点. 帮忙回答几个关于合同法的问题,谢谢1、一方当事人以缔结合同为目的,向对方当事人所作的意思表示.是( )A、 要约 B、要约邀请 2、承诺是受要约人对要约的内容表示基本同意和接 上汽集团总裁胡茂元也有一套管理哲学,就是“长勺喝汤”理论,即想要自己喝到肉汤先要学会喂别人.胡茂元能够如此为别人着想,难怪美国通用汽车公司都盛赞他是中国企业中少有的善于协调 东盟有无超越国家的权力机构? 诸葛亮上知天文,阴谋诡计,周瑜自愧不如.这句话的病在哪.(修改病句) 轴承支撑座因为是重载作业,要求轴承采用滑动轴承(轴瓦),且安装的位置具有倾斜即轴与水平面的夹角为4度请问刮瓦时有哪些注意事项,越详细越好》作为验收人注意哪些东西啊 好听的英文名,帮我取一个好听的英文名,、、?中文名:赵依琳 .性:女. 谁能帮我?修改病句:诸葛亮上知天文,阴谋诡计,周瑜自愧不如. 既然主观决定客观 为什么人犯错还是要在主观上找原因呢 哪里有废旧的节能灯玻璃卖,我想回收 那位知道生物学分类的界门纲目科属种的拉丁语各是如何翻译的? ,初二物理力,仔细回答必有好评,谢谢 一般性国际组织的定义,以及相对定义 谁知道攀枝花(木棉)在生物学中的分类的位置啊?我只知道属木棉科的 现在家用电器越来越多,冬天里开的电器更多了,我怕家电短路引起火灾,那家财险能负责赔吗? 已知反应CO(g) +H2O(g) =CO2(g) + H2(g)在1259K达到平衡,平衡常数K=1,求1,求n(H2O)/n(CO)为1时,CO的平衡转化率?2,求n(H2O)/n(CO)为3时,CO的平衡转化率?3,从计算结果说明浓度对平衡遇到的影响? 引力和磁场之间存在相互关系吗? 3,4-二氯硝基苯除了可以生成苯胺,还可以生成什么? 埃及教堂婚礼遭枪击多人伤亡 过渡政权美巴领导人强调推动反恐及经贸合作27号强台风逼近日本 安倍指示万全对叙武装分子发表在叙被劫持的俄罗斯工程中科大师生赞梅德韦杰夫:他亲切实在幽美专家说财政政策不确定加重货币政策负俄媒:俄印蒙三国总理同日访华并非偶然美媒:中国军方政治战行动影响美国对华港媒:安倍言而无信行为早已被中国看透传百度收购人人 陈一舟称不靠谱青藏铁路格尔木站火车相撞 致1人死亡圆通速递承认\"快件信息倒卖\"属实浙江一高校新规:学生3次不叠被将取消大学生被指厕所内施强奸获刑 重审后改中国航母辽宁舰再出海 将开展舰载机海台防务部门:台军计划7年采购2236英国乔治王子穿蕾丝长袍受洗礼 模样超马尼拉议员抵港就人质事件道歉 家属重上海自贸区将设立离岸产权交易中心 首中央再选十地展开巡视 更加强调对“一北京推7折商品房无户籍限制 业内称将波什透露热火新规:飞机上不能打呼噜 军情24小时:淘宝卖无人机现身叙利亚成都一小伙公交车上给熟睡大爷当靠枕合肥豪车载美女免费送早餐引围观NBA联盟尝试缩短比赛 篮网凯尔特人乌民间武装称当局调集火炮 忧东部军事连胜文谈市长辩论:自宣布参选那天起就市长辩论 连胜文阵营签名授权三立电视军情24小时:淘宝卖无人机现身叙利亚台北选战辩论成局:连营主打政策牌 柯巴基斯坦完成枭龙Block II样机报告:中国多行业亟需业务拓展人才上海:4种特殊情况夫妻可要求再生育一宝马(中国)和华晨宝马召回部分进口及前三季度全国工商机关为消费者挽回损失北京医改将财政投入重点从养医院转向补连胜文、柯文哲辩论成局 连营将强打“从新政策“管窥“公积金制度改革新动向成都鼓励科研人员创业:教师“下海”可[2014FSC]德国斯图加特电车188岁老人向占中者下跪(组图)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘