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

自动检测、建立数据库别名和表格-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环境下调试通过。

国外一学生发明新计算机系统,用微芯片代替硬盘 《近匠》第12期:Yeelink——智能硬件云服务 三星Galaxy S5:home键内置指纹识别传感器、5.25寸2K屏幕 Google发布Google Glass使用守则 三星将发布新款智能手表 搭载Tizen系统抛弃Android 从Camera360 V5版本发布,看现代相机应用趋势 索契冬奥会API:赛事的数据直播 为什么开源企业的开源大旗正在褪色 尘埃落定 腾讯确认投资大众点评,获20%股份 Unite China·2014:上千Unity开发者狂欢、五大精品课程全面开启 下载4万首歌曲仅需几秒——蓝色巨人IBM发布新传输技术 15核芯片+数据平台,Intel软硬兼备的Hadoop战略 Facebook以160亿美元收购50名员工、4.5亿月活跃用户的WhatsApp 2014年全美最吃香职业TOP100,程序员排第一 LinkedIn向所有用户开放博客发布平台 Google与Facebook的产品研发之道 小米海外扩张第一步 红米进军新加坡 Google I/O大会时间已定,Google Glass真的来了? 精英团队PK全能型数据科学家,拼的可不只是数量 专攻移动支付?PayPal将面向全球开放移动SDK CoconutKit:iOS开发必备的开源组件库 个人隐私是如何“泄漏”的:国内外互联网企业隐私策略对比 惠普2014年Q1财报:净利润同比增16% PC业务逆势好转 “阅后即焚”挖谷歌墙角,GAE技术大牛跳槽Snapchat 日800万访客、20万RPS网站的5个9可用性架构 程序员想找好工作?那就学好Linux吧! 一周消息树:开源专家袁萌,国产COS操作系统是“杂种”,不是中国软件梦 移动周报:对话智能硬件云服务平台Yeelink Node.app:用Node.js API开发iOS“原生”应用 Google Project Tango:能3D捕捉的智能手机 成功打造Evernote API生态系统的五大经验 推荐一些适合初学者看的书吧 一家位于Montreal, Canada的公司,求购一个程序 如何保存UNICODE的字符串到硬盘上 如何将HTML文本直接显示在CppWebBrowser中?(不使用临时表) 如何保存UNICODE的字符串到硬盘上 redhat第4第5两个iso文件是做什么的 关于jsp做客户端调用ejb的问题?????望各位兄弟们救救我吧!!!!! COOL!将所有菜单设置为半透明的代码(只适用于WIN2000以下版本) 请问谁知道如何用jakarta-jmeter进行压力测试? 如何判断文件夹是否存在 在Win2K Server安装Oracle817时,没有安装数据库,后在创建数据库时出现"ORA-12560:TNS:协议适配器错误"... 请教.net服务器问题 解决这个问题,给你200分!!!!!!!!!!(回头追加给你!) 我是初学者,请问.net framework先进性在哪里? 有谁试过用JAVA编FTP软件? 很简单的listBox问题,HELP 今年大四,现在找工作,求助,我怎么样………UP有分。 寻找!! IE的文本输入框,输入一字符会联想,请问怎样去掉这个联想?(Win2K) 哪位大俠能賜教 哪位大俠能賜教 你们说VC到底要学些什么?VC更偏底层,总做这种纯技术总也做不完。迷茫~~~ 请问,在Oracle里建trigger是不是有什么说法呢?一个正常的不能在正常的trigger在Oracle里运行也说compilation errors. 请教:提取字符串里每个字符首字母,谢谢!!! aa模块代码 关于强烈要求恢复可用分增长、可用分转移、非技术区得分转换为可用分的建议!! SOS:如何找到窗口中多个进程其中我所需要的那一个? SOS:如何找到窗口中多个进程其中我所需要的那一个? 笑的人再发几个 query1.next是将指针移向下一条,啊向上条一记录是用什么命令呢? 对话框中使用工具栏如何进行更新? 关于文件指针的问题 ASP中SELECT 查询中前几条的查询如:TOP 的用法哪位讲解一下. 如何查找到两个不同数窗的不同数据 诚招ASP老师一名(请版主不要删) 提问!(欢迎讨论) 停电重启 原来已经编译通过的程序,再重新编译竟然出现了150个错误 一个很奇怪的想法 请问怎么转换以空格为分割符的文本文件转换为以TAB为分割符的文本文件?急! WIN2000下怎么设CLASSPATH (散分):BDE,ADO,dbExpress的前景如何? 关于VB调用asp的问题 如何关闭office2000文件优化器? 怎么知道combobox选中的序号如combobox.item[i]中的i 怎么知道一张图片的有效宽度及长度 浙大1082的几个疑问 系统快成功了,有个大问题 请问98是不是自带了一个局域网聊天工具? 求助!VC中起动现有的Windows程序的语句。谢谢! 请教:如何在DATAGRID控件的行标头上,写上1,2,3....的顺序号?? 请C++语言高手回答:一个有关C++语言派生的简单问题! 不能用汉字制作电脑系统,为什么不能用汉语注音符号做电脑系统呢?比如VB语言的“input”可以用“ㄕㄨˉㄖㄨˋ”(就是输入的注音符号,拼音‘shū rù’翻译过来就是了) PS和AI实质上的区别是什么.为什么PS那么普遍的使用.AI的使用面很小.他们有什么区别. 遗失的幸福用英语怎么说 续写句子 书是钥匙,能开启智慧之门; 书是良药,__________; 书是_____,__________;在_____ 填 我的书屋,我的梦 .400字作文 我的书屋,我的梦征文怎么写?结合新中国成立65周年 左边一个米右边一个少是什么字 求,写压岁钱的作文 写出歇后语的后半部分.矮子坐高登—()稻草人救火—()炒咸菜放盐巴—()擦胭脂进棺材—()各位...写出歇后语的后半部分.矮子坐高登—()稻草人救火—()炒咸菜放盐巴—() 左边一个米字 右边一个甚字 是什么字 骑马与砍杀和骑马与砍杀战团哪个好玩,有什么不同? 歇后语棺材头上雕花的下一句是什么? This shirt is cheaper ____ that one.填上合适的单词. 毛泽东的座车变迁史的第2题怎么写 18 ST.LEONARDS CL.NOBLE PARK VIC 3174 AUSTRALIA这个英文地址翻译成中文是什么意思 一个者字下面一个羽字读什么一个者字下面一个羽字读什么 英语翻译当你还是很小的时候.妈妈花了很多时间教你用勺子、用筷子,教你怎麼吃饭.教你穿衣服、系鞋带、扣扣子.教你洗脸,梳头发.我爱我的妈妈!你在渐渐长大,而妈妈渐渐的老了有一天 当 有哪个英语单词是9个字母,且第2个是l, 表事拼搏的词 毛泽东的座车变迁史练习题的第1小题怎么写? 请你更换下面各单词中的某个字母,使其成为另一个单词求大神帮助safe 、 meet 、road、hand 快来 急 食盐在20摄氏度,100摄氏度时的为36克,40克.若将100克水在100摄氏度时制成饱和溶液,溶解食盐——克,从中析出食盐固体_克;若降降温后所得溶液保持20克,50克水,则析出食盐的质量分别为_克,_克 《毛泽东的座车变迁史》 1、说说下列词语在文中的意思.横空出世 鲜为人知 y=lg(mx2-mx+1),要使定义域为R,求m 取值范围? 韩国蔚山与美国底特律都是著名的汽车城,它们有何异同? 毛泽东的座车变迁史:“这辆加长型‘大红旗’矫车堪称‘国宝’”.作者为什么要赞叹这辆车堪称“国宝”? 【欢乐女神】表达了作者什么样的精神 世界上纬度最高,跨经度最多大洲和大洋分别是?北冰洋和南极洲共同的特点? 要一篇精彩!的我的书屋我的梦作文,500字以上 欢乐女神蝶的描写片段 七年级上册历史的三次改革都起到了怎样的作用 1、桂林山水美得像() 2、他听到()从那边传来 3、大海里的鱼非常多(改夸张句) 欢乐颂中的欢乐女神是什么含义 左边一个月字旁,右边一个会是什么字? 大海掀起巨浪改成夸张句十万火急啊 大海里的鱼非常多.改夸张句 左边一个女子 右上边一个公下面是一个羽 这个字怎么读啊!急 最长的英文单词是什么求大神帮助 大海里的鱼很多 改成夸张句 英语翻译麻烦翻一下(谢绝翻译器答案 ):"欢迎留下你的脚印"(就是欢迎你留言的意思) 改夸张句:大海里的非常多. 语文人教版四年级上册语文园地七的习作怎么写? 英语翻译1.上课认真听讲2.课后认真完成作业3.考前认真复习4.有恒心,有毅力,敢于钻研5.遇到问题及时询问老师取得好成绩就这么简单! 最长的英文单词是什么?求大神帮助 大海里的鱼非常多.(改为夸张句) 人工智能与智能的定义和本质区别是什么? Sydney Australia是什么意思 Welcome to china when you have free time,I will be your guide for 10 pounds one hour.Is that OK? 英语翻译我所居住的地方是中国冬天最多雪的地方,但今年雪下的特别少.很多国家都拍了以A 为主角的电影 ,但是我觉得J扮演的最形象.我也十分欣赏J.谢绝翻译软件 australia,sydney,amazing什么意思? 海洋里的鱼非常多.(改为夸张)只要写出鱼多就可以了! 检查一下我做的对不对31、I was bad at English last term, I will try my best to learn it _D_____. A. from then on B. from last term C. from on D. from now on 32.—I think that China will win the World Cup one day. —I__A_____. The Chine 60摄氏度时,将30克硝酸钾溶于210克水中,该溶液中溶质的质量分数为---,若将该溶液平均分成三等份,则:(1)取第一份,温度升高到90℃,此时溶液溶质的质量分数为---.(2)取第二份,要使溶液的 Sydney Australia 帮我检查一下我做的对不对-1 I called____you five times yesterday.Where are you?(at)2 It's too late to go to the pictures.Why don't we call the whole thing____?(out)3 We called____to him but he could not hear us.(out)4 I called____the post 上面一个羽字,下面一个佳字.是什么字拼音字母拼 北京和澳大利亚的sydney的四季有什么不同 恐怕像这样的黑色鞋子在两个月前就不流行了.用英文翻译 AI和PS的区别 Sydney.Australia用英语怎样读?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘