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

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

看中国大学生的移动创意激情 第六届英特尔杯软件创新大赛侧记 在哪里工作更好?Facebook大胜Google WDC超链接图:涵盖35亿网页、1280亿超链接 英特尔:机器已扛不住亚洲的空气污染 IE11中全新增强的F12开发人员工具 TUP第31期报名已满 向主讲人《浪潮之巅》吴军提问征集 对话Spark核心作者Ion Stoica:我的编程之路从2KB内存开始 埃洛普出局?微软董事会称Mulally、Satya有望是下任CEO 百度开源平台上线,聚合百度开源项目 盘点TOP500:值得关注的超算,及当下趋势 【BDTC讲师】Tachyon作者:大数据存储以及处理框架经验分享 进一步称霸中国:低端设备让Android在中国每季获3%增长 低端设备撑起Windows Phone市场份额 研发周报:你的数据库准备好过冬了吗 JVM垃圾收集器使用调查:CMS最受欢迎 技术创业不能一味追求“骨感”,必要时丰富自己的5个途径 帷千动媒副总经理兰旭:整合现在,梳理未来! 11月份浏览器份额:IE继续上涨,Chrome仍不温不火 Windows 8令人担忧:8和8.1两版本份额目前仅有9.3% 一周消息树:微软还需更激进的手段——开放Windows Phone 【开源推荐】Genome.js:当DNA遇到开源 Go 1.2发布 着重语言特性的改进 微软资深IE专家邹颂兵:好产品才是竞争的关键 Web应用程序完全测试指南 Python正在取代R,成为数据科学界新宠 代号Threshold:微软将推Windows统一平台Threshold 日本任天堂掌机应用:《卢浮宫》革了谁的命? [TUP第31期]《浪潮之巅》吴军:硅谷3.0助力中国企业走向国际 SequoiaDB创始人:比MongoDB领先一到两年 打造企业级NoSQL数据库 [对话CTO]甲骨文熊光樑:全球研发模式开发出接地气产品 GitHub中国游记之长城——跨越那堵看不见的墙 请问大虾:MDI窗体的菜单能不能和子窗体的菜单一起显示在菜单栏上??? 再谈关于PB控制Excel的问题。。。(ton2000) COM连接点客户端接受器的实现问题 为什么我的安装包不能安装?请高手指教,急啊。 送分问题:ASP字符串处理的函数有哪些? VB中将数据库中单条记录输出并打印! VB中如何宣告在DLL文件中的函数? 如何在正则表达式中加入变量 delphi 中的table 的filter有没有支持 like方法,该怎么用,同时filter当字段值为中文时怎么写? 主板上所有的风扇都不转了,硬盘和cpu都能正常工作,请教,谢谢!! 如何判别文件是不是文本文件? 新换了一块20G的硬盘,准备拿出10G安装Redhat7.2,请教最佳的分区方案? 关于武大华软 基于EJB的三层架构下的报表解决方案讨论...... 请问如何保存一个网站的资源 大学本科,,函授,自考,夜大,远程教育,自学!哪个硬! 比比! 斑竹到哪里去了???为什么我问的问题都没人解答的????斑竹职责何在??参与有分 基于EJB的三层架构下的报表解决方案讨论...... 哪位大侠可以给我解释一下“函数重载”是什么??请具体一些!! COM连接点客户端接受器的实现问题 用SQL SERVER中的imprort and export data 将paradox的数据库转为SQL SERVER数据库,可当数据库有密码时,如何转换? 请问java的xml解释器有哪些?怎么能在applet里用这些解释器? 一个小问题!有分哦 关于DBgrid的操作? 一个关于header的问题 一个小问题!有分哦 基于EJB的三层架构下的报表解决方案讨论...... 我这个LoadCursor为何不听话 jsp连接数据库(Access)的问题 局域网中为什么网上邻居里只能找到自己,别人找不到我的计算机,我也看不见别人的? LoadImageA()函数的参数的说明 怎样将一个服务注册成NT的系统服务 本人准备休整 **********获得文件大小的问题********* 关于武大华软 請教:vb里dim oRs as ADODB.Recordset 與dim oRs as new ADODB.Recordset的區別在哪里? delphi6又现bug,敬请网友注意!!!!!!!!!!!!!!! 找错误! 请playyuer(女㊣爱)及其它高手提供一些经典实用的ADO语法或SQL语句或(MSDN上有的就不要提供了) 关于武大华软 请帮我逐行解释下C++Builder的基本代码结构。谢谢 哪位有本事能帮我破开一个邮箱密码? 消息捕获 关于武大华软 帮我看看程序,那里出错? 如何解决有关历史数据问题 JSP社区程序BBS-CS V2.1发布! zhudexiang(阿祥)将告别CSDN!!!信誉被封杀??? 关于武大华软 mprexe没有响应 怎么在datawindow中用上下左右键来控制光标(null)。 化学反应热的计算已知CH4(g)+2O2(g)== CO2(g)+2H2O(l);ΔH=-Q1kJ·mol-1, =2H2O(g);△H2=-Q2 kJ·, =2H2O(l);△H3=-Q3 kJ·.常温下,取体积比4:1的甲烷和氢气的混合气体11.2L(标准 温带分暖温带 寒温带 .怎么划分?每上升多少纬度分暖温带 寒温带 离子化合物的分子是由离子构成,那麽共价化合物呢? 高中生物,一道必修二的算概率的题人类白化病是由常染色体上的隐性遗传因子(a)控制的一类遗传病,现有一对肤色正常的夫妇,丈夫的母亲和妻子的人类白化病是由常染色体上的隐性遗传因子( 用过的荧光棒有毒吗 硫酸是最强的酸吗? 生物必修二概率问题 求高手一白化病的女和正常男生育 生一个患病孩子 若再生两个 两孩子出现白化病几率多少 我知道他们正常白化病各一半 为什么 题意两和孩子可以用二分之一程二分之 荧光棒里的东西是用什么做的?吃一点点会有毒吗?我不小心误食了一点,有什么影响? 世界上最强的酸是什么? 一道高一必修二生物概率题甲病是常染色体显性遗传病;乙病是伴X染色体隐性遗传病.Ⅱ3是纯合子的概率是1/6,她与一正常男性婚配,所生子女中只患甲病的概率是多少?怎么算? 荧光棒里面的液体有毒吗? 番茄、辣椒、大蒜、茄子、竹笋、百合、芋艿分别属于单子叶植物还是双子叶植物? 算概率的,会的帮下忙!假定基因A是视网膜正常所必需的,基因B是视神经正常所必需的,现有基因型为AaBb 的双亲生了一个正常的男性,该正常男性与一个视觉障碍的女性(基因型为aabb )结婚,后代 请从微观角度即分子和原子的角度帮我解释什么是纯净物,混合物,单质,化合物,氧化物. 酸根定义:某种酸电离时生成的阴离子叫做这种酸的酸根.中的酸是含H离子的那个酸吗 高一生物必修二概率问题AaBbCcDD与AABbCcDd杂交后得到AABBCCDd的机率! 化学反应能量变化的能量是什么, 北京的气候究竟是暖温带大陆性季风气候还是温带季风气候? 儿子误服荧光棒液体如何处理的量少,精神好,已簌口 化学键与化学反应中能量变化的关系 盐溶液显什么性是不是由其中的酸根离子决定的?我看好多盐酸盐都是显中性的,是不是所有的盐酸盐都是显中性呢? 我想问,小孩误食荧光棒里的液体,该怎么办? 化学键与化学反应中能量变化的关系(填空题)发生化学反应时,断开反应物中的化学键要__吸收__能量,而形成生成物中的化学键要__释放__能量,化学键的____是化学反应中能量变化的主要原因 关于铁三角的部分化学方程式或离子方程式Fe2+ +MnO4(阴离子)----Fe3+Fe2+ +H2SO4---Fe3+Fe+MnO4(阴离子)----Fe3+希望能够写出具体的方程式, 误食荧光棒液体 我咬了一下发现苦 就吐了出来 发现全是发光的口水 我就不停的吐吐沫 回来漱了漱口 有事么? 下列叙述中正确是 A.所有的化学反应都释放能量 B.化学反应中的能量变化与化学键无关C.NaOH溶液与盐酸反应释放能量D.NH4CL与Ba(OH)•8H2O反应释放能量 暖温带大陆性季风气候在我国的分布范围是怎样的? 荧光棒里的液体有毒吗 在强碱性条件下,想鉴定是否存在铬酸根离子该怎么做? 暖温带大陆性季风气候的四季中什么季节最长什么季节最短 我们吃的食物中属于生殖器官的一组是()a.白菜,马铃薯,香蕉b.葡萄,菠菜,哈密瓜c.松子,南瓜,葵花籽d.橘梗,桂皮,香叶 正铬高酸根离子在非酸性条件下有强氧化性吗 北京市属于暖温带大陆性季风气候,形成这种气候的主导因素是 初三化学 化合价NaClO3 与 NaClO 的化合价是否相同,如何计算? 用分子原子离子知识解释问题1.食物腐败2.CO有毒CO2无毒3.CuSO4溶液和Na2SO4溶液颜色不同4.温度计中水银热胀冷缩 有一个人得了种怪病:他不快乐,整天都闷闷不乐.一天,他拜见一位智者以讨求良方.智者说只有世界上最好的东西才能让你快乐起来.这个人看了看身边,他发现没有自己觉得最好的东西. 苹果和土豆敷眼,哪个消黑眼圈效果好?捣碎的苹果和土豆,哪种睡前敷眼消除黑眼圈眼袋效果好点?那做面膜的话,用土豆还是苹果直接敷比较好?那个,土豆片白天敷好还是晚上好?其实我觉得弄 怎么样判断物质是由分子组成还是离子构成如氧气和NACL晶体随便问问NACL和NACL晶体有什么区别? 世界上最好的东西 世界上最好的东西是什么? 初三化学中的化合价 谁告诉我物质构成(即原子、分子、离子的有关知识) 为什么只有共价化合物时才能说是由分子构成 土豆为什么被称为地下苹果 五带四季的气温变化分别是什么,都是春暖夏热秋凉冬冷么, 求问共价化合物都是由分子构成的吗,共价化合物都不导电吗 肼(H2NNH2)是一种高能燃料,有关化学反应的能量变化如图所示,已知断裂1mol化学键所需的能量(kJ):N≡N为942、O=O为500、N-N为154,则断裂1molN-H键所需的能量(kJ)是 A.194 B.391 C.516. D.658 为什么化学键形成会释放能量? 酸牛奶含有乳酸,乳酸的化学式为C3H6O3 ,仅以二氧化碳和水为原料,能否制得乳酸?简要说明理由 通常把拆开1mol化学键所吸收的热量看成该化学键的键能,已知部分化学键的键能如下1.通常把拆开1mol化学键所吸收的热量看成该化学键的键能,已知部分化学键的键能如下发射神舟飞船的长征 什么是?酸性氧化物 碱性氧化物 两性氧化物 碱盐氧化物 乳酸的化学式为什么是C3H6O3? 寒温带,暖温带大致位于哪个纬度?这些是怎么划分的, 为什么形成新化学键要释放能量? 乳酸的化学式以及性质 关于化学反应热书写化学反应方程式时,后面要求注明化学反应热的大小.反应热的数值与化学计量数对应,怎么对应?如2C2H2+5O2==4CO2=2H2O 这里的△h与哪个系数对应,为什么?其他的要怎么看呢?谢 中温带暖温带属于什么划分 饮品与酸奶有何区别? 化学反应热的比较正负号要比较么 热带温带气温划分热带亚温带有没有明确的气温划分界线,比如气温多少度以上是热带,多少到多少范围内属于温带.我补充下,我是想通过气温曲线图判断这个地区属于哪种气候......是属于什么 利用茎繁殖的是:甘薯,马铃薯,大蒜还是洋葱?帮帮我啊!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘