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

自动检测、建立数据库别名和表格-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
自动检测、建立数据库别名和表格-Delphi资料

一、数据库别名(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;

四、本程序在Pwin95

Delphi3环境下调试通过。

在按钮中快速启动程序-Delphi资料 怎样读出MEMO控件的当前值-Delphi资料 怎样使用Delphi 5中的TExcelApplication操纵Excel 97/2000 怎样在TDataset中汉英混用-Delphi资料 制作可移动的窗体的MovePanel控件-Delphi资料 制作可移动的分割窗体-Delphi资料 制作用于日期时间型字段的DELPHI数据感知控件 制作主窗口显示前的版权窗口-Delphi资料 状态条插入可视控件-Delphi资料 做动态显示的控件-Delphi资料 做一个OpenGL控件-Delphi资料 Api函数列表——与打印相关-Delphi资料 Delphi 5快速创建控制面板程序 Delphi 编写Windows NT服务 Delphi 的 分 发 工 具 ─ ─InstallShield Delphi 关于系统编程中的技巧 Delphi3如何调用Excel Delphi5.0中的函数调用模式 用Delphi 编 程 时 如 何 利 用 线 程 Delphi的8个技巧 delphi函数参考手册 DELPHI键盘常用快捷键汇总(DEFAULT 和CLASSIC) Delphi实现自动切换输入法 Delphi使用汇编 Delphi系 统 提 示 信 息 的 汉 化 DELPHI下的多线程程序设计 Delphi下汉字输入法的编程及使用 在Delphi与C++之间实现函数与对象共享 DELPHI中处理时间 Delphi中的INI文件编程 DELPHI中的消息处理机制 这个异常是什么回事? 小小问题。。。 為深麼我的Wizard模式的PreportyPage的OnWizardNext函數實現後,不能出現第二個頁面,how to. 那一个有的高程模拟试题 简单问题,请指点 在线等待求助:win2000缠人问题 ****郁闷,从来没有遇到这样的问题!!!为什么报表显示的时候会闪一下!而且显示出来后其窗体还没有自动关闭!******** 请大家发表一下自己的意见 问一个消息? 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 求助:chart使用Lineseries颜色问题 ?在C#的如何运用线程 关于安装Websphere Portal的问题。希望大家帮我解决一下。 非法字符的问题 转让一优派PT813 21寸显示器(适合专业作图) 北京 一个小问题,还请多帮忙!谢谢!! 怎么用命令看到一个进程的内存数? 用VC怎样获知当前Window是否支持某国语言(如中文)? 投诉: 有关通用查询组件—— 视图选择公式的问题,请帮帮我! 请教一小问题? DataSet.AcceptChanges()这个有什么用呀??? 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 ?怎样在ASPX的WEB服务中运用C#的线程 在2003下用Interdev 串口通信的问题 紧急50分 在 vb.net 中,如何读取 xml 文件? 斑竹地进来! 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 新装的WIN2000,关了启动程序,占内存近100M,还老出怪问题 连编以后,出现的错误,求解 我有一个外来控件(条形码),请问该如何用代码在图片框中动态添加一控件?? 系统设计师就要开考了,请考过高程和就要考高程全部看过来~~~~ 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 如何把一组CLASS文件打成一个JAR的包 谁用过solid数据库阿,可知里面怎莫用视图阿??紧急! 求求大哥们了 怎样动态改变控件的属性? 明天要去九城面试,有知道内情的吗,给说说,无限感激,, 大家帮忙看看!我有记个问题一直困扰我!(送分的问题(可以加100分啊),不够可加啊!都是送分题,来者都有分) 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 如何处理让播放器播放多首歌 【请教】vc适合oo开发? Window中的大/小字体显示属性改变后,影响对话框大小的问题(VC)? 如何处理让播放器播放多首歌 如何同时使用两个msn 欢迎参加微软新闻组 & Diyinside Windows User Group离线技术沙龙 在线等待大虾求助:win2000缠人问题 求ASP下进度条源码!多谢了! Gracious Somnus 17 答案 解析~ “声色犬马”嘛意思你的声色犬马,我的淡若天涯.这句话啥意思,忘具体说明, God's gracious 硫在空气中不完全燃烧的产物是什么 硫不完全燃烧的产物是啥东东 英语翻译 A./,the,the B./,the,/ C.the,the,the D.a,the,/ 戊己土各自在什么时候是最旺的呢 prefect什么意思 prefect 声色犬马具体是指什么,有何寓意? 土耳其:中国当代建筑展展现“蓬勃中国中组部:领导干部退休后三年内兼职须经从严规范领导干部在企业兼职任职朝鲜民众喜迎土豆大丰收 数量多到让人美被爆在驻华使领馆搞监听美媒:十年后大学啥样? 网络授课 学巴基斯坦愿率先加入中国空间站昔日嫩模兽兽近照 皮肤松弛显老态越来听中国学者回击菲“九段线”质疑贵阳小学现黑板报外包 评论称扼杀学生受吉林地震影响 哈尔滨铁路局紧急扣停70后程序员夫妻,把徽州老宅修成无敌女人的配饰!Maison Martin Marg永恒力叉车在南京青奥会上展现青春活力最本土和最贴近的《遵义人》即将重装启神一样的面包吃法,好吃到没朋友!特斯拉P85试驾体验:神秘感越来越少中华十玩你玩哪样?一条微信带你看完“云南”的所有美……盘点全球魅力都市 TOP 20,哪里艳星蓝燕全裸透视裙走红毯没人管吗(图两球成名都市女神系统废墟之上脱单宣言汉皇刘备烈祖神级圣骑重回无限做魔头坏蛋之风云再起2漫漫天路绝灭天道龙潭旅游文庙大成殿旅游三盘尾旅游虎屿旅游国际滑沙娱乐中心旅游过江龙索桥旅游严田古樟民俗园旅游澳门科学馆旅游镜泊峡谷旅游渤海国遗址旅游百国兴隆寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘