在Delphi中动态建立数据库结构
--------------------------------------------------------------------------------
一、问题的提出
在程序运行过程中动态建立数据库结构是我们编写功能通用的数据库管理系统常见
的问题。通用数据库管理系统开发的基本思路是:系统允许用户自行设定管理对象的数据
库结构,然后通过算法和编程技巧,在用户设定完成后动态创建管理对象的数据库结构和
完成系统功能的一些其它数据,这样可以满足不同用户对管理系统管理项目的不同要求,
进而达到通用的目的。因此,通用数据库管理系统开发的关键是系统能否动态地创建数据
库结构。我们熟悉的Foxbase+、Foxpro等语言,均提供了动态创建数据库结构的命令或过
程。
但是,在许多资料和书籍中,没有介绍用Delphi如何动态建立数据库结构,给我们开发
一些功能通用的数据库管理系统带来了不便。那么如何在Delphi中动态建立数据库结构
呢本文是作者在查阅大量资料,经过反复实践的基础上得出的在Delphi中动态创建数据
库结构的方法。
二、设置Delphi数据库配置程序
在Delphi中要进行数据库管理必须先设置好数据库配置程序BDE,所有对数据库的 ***
作,最后都要通过BDE去完成。下面以最常见的Dbase数据库为例来配置Delphi的数据库引
擎BDE。
1 进入Delphi的集成开发环境IDE(Integrated Development Environment),在Dat
abase菜单下选择Explore,出现SQL Explorer窗体,在Object菜单下选择BDE Administra
tor。
2 出现BDE Administrator窗体后在Database页上选择Dbase,在Definition页中将
Type项设为Standard;将Default Driver项设为Dbase;将Path项设为一工作目录名(如:D
:\MYNAME)。以上过程即为数据库的别名(Aliases)设置,这在以后Delphi的程序开发过程
中要经常用到。
3 选择Configration页,在Drivers的Native项中选择Dbase,在Definition页中将T
ype项设为File;将Langdriver项设为DBASE CHS CP936;将Level项设为5。
4 完成上述工作后,在Object菜单中选择Save as Configration,按出现的对话框要
求将以上的设置保存好。至此,数据库的基本配置工作就完成了,我们就可以进行下面的
工作了。
三、动态创建数据库结构方法
在Delphi中动态创建数据库结构有两种方法。
方法一:使用Table组件的CreateTable方法。步骤如下:
1 进入Delphi的IDE建立一个新项目文件和新窗体(Form1)单元文件(unit1pas)。
2 在Form1上加入Table1、Edit1、Edit2、Button1组件。将Button1组件的Captio
属性设为‘创建’。
3 用鼠标双击Button1进入Unit1pas单元文件,在光标处加入下列代码。
with table1 do
egi
active:=false
databasename:=‘dbase'
tablename:=‘mydbf'
tabletype:=ttdbase
fielddefsclear
fielddefsadd(edit1text,ftstring,10,false)
fielddefsadd(edit2text,ftinteger,0,false)
createtable
end
4 按F9键编译运行,在Edit1处输入一字段名称:ZD1,在Edit2处输入一字段名称:ZD
2,然后点击"创建"按钮,程序将在D:\MYNAME目录中产生一个名为MYDBF的数据库文件,用
Database Desktop查看文件结构如下:
FieldName
Type
Size
Dec
ZD1 C 10
ZD2 N 11
方法二:使用Query组件,用结构化查询语言SQL(Structured Query Language)语句创
建,步骤如下:
1 同方法一之步骤1。
2 在Form1窗体中加入Query1、Button1组件,将Query1的Database Name属性设为‘
Dbase’;将Button1组件的Caption属性设为‘创建’。
3 在Query1的SQL属性单击,出现Sting List Editor窗口,在该窗体中输入以下SQL
语句:
Create Table My(
ZD1 Char(10),
ZD2 Numeric(10,2))
4 双击Button1进入Unit1pas单元,在光标处加入下列代码:
Query1ExecSQL
5 按F9键 编译运行,在"创建"按钮处单击即可产生一个名为MYDBF的数据库文件,
存放在D:\MYNAME目录中,用Database Desktop查看其结构如下:
FieldName Type Size Dec
ZD1 C 10
ZD2 N 10 2
以上所介绍的 *** 作和程序均在Windows98 *** 作系统下,Delphi 30 C/S版上调试运行
通过。
Delphi读取mdb数据库不一定要控件。
在接受Delphi读取mdb数据库时,它是和数据绑定控件脱离的,当然从某种意义上来说,这种方案提高了执行效率,给设计人员以更多的选择。
如数据库文件的完整路径,数据库类型,数据库的字段名、类型、长度等。在delphi程序中可以定义三种标准类型的数据库。
delphi连接数据库的时候可以通过配置实现(前面输入或者ini文件读取用户名和密码、实例名)等信息,实现连接数据库的过程(准确来说不是静态绑定的);
你应该可以这样处理:
1、客户端(访问数据库验证输入的密码是否正确)正确后连接服务端;(要求两个都能连接数据库);
2、客户端发密码信息给服务端验证,这样就涉及到服务端和客户端的网络通信问题;
Sybase和MicroSoft SQL Server数据库
在建立Sybase或MicroSorft SQL Server的SQL Link时除了需要下列文件外 应用程序还需要Sybase数据库管理系统的客户端的连接产品与网络协议接口
表 建立Sybase数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_SS DLL BDE SQL Link for Sybase的驱动程序
SQLD_SS HLP 联机帮助文件
SQL_SS CNF Sybase驱动程序的BDE配置文件
W DBLIB DLL Sybase/MC SQL Server客户端的DLL文件
DBNMP DLL Sybase/MC SQL Server客户端的DLL文件
SYDC LD Sybase语言驱动程序
SYDC LD Sybase语言驱动程序
━━━━━━━━━━━━━━━━━━━━━━━━━━━
Informix数据库
在建立Informix的SQL Link时除了需要下列文件外 应用程序还需要Informix数据库管理系统的客户端的连接产品与网络协议接口
表 建立Informix 数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_ss DLL BDE SQL Link for Informix的驱动程序
SQLD_INF HLP 联机帮助文件
SQL_INF CNF Informix驱动程序的BDE配置文件
LDLLSQLW DLL Informix客户端的DLL文件
ISAM IEM Informix错误信息文件
OS IEM Informix错误信息文件
RDS IEM Informix错误信息文件
SECURITY IEM Informix错误信息文件
SQL IEM Informix错误信息文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
InterBase 数据库
在建立InterBase的SQL Link时除了需要下列文件外 应用程序还需要InterBase数据库管理系统的客户端的连接产品与网络协议接口
表 建立InterBase数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_IB DLL BDE SQL Link for InterBase的驱动程序
SQLD_IB HLP 联机帮助文件
SQL_IB CNF InterBase驱动程序的BDE配置文件
CONNECT EXE InterBase连接测试诊断工具
CONNECT HLP InterBase连接测试诊断工具的帮助文件
GDS DLL InterBase API DLL
REMOTE DLL InterBase与网络的接口的DLL文件
INTERBASE MSG InterBase错误信息文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
lishixinzhi/Article/program/Delphi/201311/25179
内建的Bold对象编辑界面
双击BoldGrid中左侧的箭头 或者记录可以激活对象编辑对话框 对象编辑对话框可以同时启动多个 如下图所示意
在BoldGrid中 我们可以使用ctrl+鼠标点击来多选对象 也可以点击网格左上角来选中所有的对象 但是默认的BoldGrid对象编辑器不支持人员和账目对象的关联的显示和编辑 但d出的对象编辑器则支持这些关联 上图框起来的箭头 可以用来拖放对象 将哈巴狗拖动到PayPerson的位置 就可以建立支付人同账目对象之间的关联了
还有一点要注意的是d出式对象编辑器并不是同Grid同步绑定的 因此我们可以打开多个编辑器的同时还可以在网格内的记录间导航到不同的位置 两者可以做到互不影响游标 而传统的数据库程序无法做到这点 因为当游标改变时 会同步改变所有同DataSource绑定的数据感知组件中的内容
退出系统后 可以看到Data xml中记录了刚才输入的信息
主从关系的实现
使用上面的Bold程序 再输入一个大尾巴兔兔的用户 你会发现有一个问题 就是大尾巴兔兔同志目前没有任何账目支出 但是点选到大尾巴兔兔对象上时 账目网格组件仍然是显示所有的账目信息 而没有实现主从关联
为了实现主从关系 需要修改一下账目对象的BoldListHandle组件的属性 将blhAcct的RootHandle属性由原来的DmMoney bshMoney改成blhPerson 表示父对象是人员 同时要将Expression属性改成Pay 另外为了能够在账目网格中显示同账目关联的人员信息 双击bgAcct网格 添加一个新的Column 设定它的BoldProperties Expression为PayPerson name 表示字段用来显示支付账目人的名字 见下图示意
再次运行程序 可以看到这回实现了真正的主从关联 当点击哈巴狗时 只显示同哈巴狗关联的账目 同时 如果这时点击账目网格的添加命令的话 新建的对象的PayPerson自动设定为哈巴狗 如下图示意
级联删除的实现
前面虽然我们实现了主从关系 但是将所有人员都删除后 你会发现data xml文件中仍然有账目信息 这表明 删除人员时 没有将同人员绑定的账目信息删除 也就是说并没有实现级联删除
为了更形象的察看这一现象 在界面添加一个BoldGrid BoldNavigator和BoldListHandle来显示系统中所有的对象 设定BoldListHandle的RootHandle属性为DmMoney bshMoney 设定Expression属性为MoneyModelRoot allInstances表示显示系统中所有的对象实例
然后向前面一样将BoldListHandle绑定到BoldGrid和BoldNavigator 并创建默认的Columns 再次运行后的效果如下图所示意
可以看到全部对象列表中有两个字段 type字段表示系统中对象的类型 而AsString字段则显示对象的字符串表达 但是默认Person对象的AsString字段里面显示的是对象组件加类别字符串 而AcctItem对象的AsString显示的是对象的Amount属性 但是为了观察对象被删除的情况 我希望能够显示更有意义的字符串 如显示人员的名称 显示账目的名称及支付人
因此需要修改模型中对象默认字符串的定义 双击数据模块中bmMoney 激活Bold UML Editor 选中Person对象 设定Default string rep为name 表示默认的AsString属性为人员的名称 见下图示意
同样的 设定AcctItem的Default string rep为payPerson name+ +name 表示AsString由支付人的名称及账目名称构成
再次运行程序 显示效果示意如下
这时 将哈巴狗从人员列表中删除后 界面示意图如下
可以看到账目对象大白菜和化妆品仍然还在 只是支付人信息为空了 看来账目对象确实没有被级联删除 为了实现级联删除 再次打开Bold UML Editor 展开PayAssoc关联 选中Pay 然后设定Delete action为Cascade 表示使用级联删除 见下图示意
再次运行程序 输入人员信息及人员账目信息后 再删除人员 会发现这回将绑定的账目信息也一同删除了
总结
lishixinzhi/Article/program/Delphi/201311/24783
以上就是关于delphi连接数据库全部的内容,包括:delphi连接数据库、DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[3]、关于DELPHI动态数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)