delphi如何连接oracle数据库

delphi如何连接oracle数据库,第1张

Delphi作为强大的数据库前端开发工具,提供了很多数据库存取方式的封装控件。对于Oracle的数据存取控件,不管何种数据库引擎,一般都会封装一个Connection作为数据集的连接控件,因此只要设定Connection的相关属性即可,其它dataset控件,如query,table等只要指定此Connection即可,客户端应用程序要连接到Oracle的Schema,一般都需要安装Oracle Client,并使用Net Manager设置客户端可以访问的Oracle Database Server的主机名称及存取协议、Port等信息。可以使用以下的方式连接

dbExpress:dbExpress比较适合连接SQL的数据库,据说效率挺高的。放置一个dbExpress页签下的SQLConnection,在此控件上点击鼠标右键,选择“Edit Connection Properities”功能,并依下图设置即可。其中Database栏位要设置为Oracle Client中设置的服务名,如果需要记住密码,而不用每次连接的时候输入密码,请将 LoginPrompt属性设置为False,设置OK后即可测试将Connected:=True看看是否成功,其它数据处理控件请选择相应dbExpress页签下的控件即可。

BDE:BDE应该来说是Borland自己的数据库引擎了,效率也是相当不错的。当然也是支持Oracle连接的。使用BDE页签下的database控件,设置方法参考下图所示:

ADO:ADO是Microsoft所支持的数据库连接技术,大有一统windows客户端数据存取引擎的意思,在.net平台,推出了ADO.NET,更好地支持了XML。DELPHI有对ADO做了一些封装,使用ADOConnection,通过向导设置它的ConnectionString即可,可以参考下图所示:

ODBC:ODBC是最传统的链接方法了,效率相对来说稍微低一些,不过通用性也更强,不建议使用这种方法。使用前需要先到ODBC设置中增加一个数据源名称DSN,然后再透过ADO或者BDE组件来实现数据的存取。可以参考如下图片设置:

不使用控件,比如使用原生的ADO组件,不太建议这种方法,既然Delphi已经做了封装,何必又要回到原始状态呢。以上连接方法都需要安装Oracle Client软件,但是Oracle官方的Client太过庞大,安装非常不便,目前网上有人发布一个精简版的Oracle Client软件,比较小,可以满足连接Oracle的需要,可以去下载这个软件,而不用去安装复杂的官方版本。

下载ODAC控件,此控件不需要安装Oracle Client,而是使用OCI的方式透过TCP/IP协议直接连接到Oracle Server,可以将程序做成瘦客户端,程序分发的时候比较方便。此控件支持Delphi的大部分版本以及C++Builder以及kylix以及.net,而且提供源代码,有兴趣的可以研究一下。具体安装使用方法请参考控件的相关说明以及帮助文档。

在数据库应用程序中 数据控件是经常要用到的 数据控件都是可视的 也就是说 如果修改了这些构件的属性 能在窗体上马上反映出来 如果这些构件的Enabled属性设为True并且数据集的Active属性也设为True 在设计期就可以看到数据

下面就来介绍一下这些控件的简单应用

指定一个数据源

数据控件必须通过TDataSource构件连接数据集 TDataSource构件扮演的角色实际上就是数据控件与数据集之间的桥梁 首先 把一个数据集构件放到窗体或数据模块上 设置它的DatabaseName属性指定要访问的数据库 设置它的TableName属性指定要访问的表 接着 把一个TDataSource构件放到窗体或数据模块上 设置它的DataSet属性指定数据集 然后 把一个数据控件放到窗体上 设置它的DataSource属性指定TDataSource构件 而这个TDataSource构件的DataSet属性已经指定了一个数据集 最后 设置数据控件的DataField属性指定要显示的字段 不过 对于TDBGrid TDBCtrlGrid和TDBNavigator构件来说 不需要设置DataField属性 因为这几个控件是以整个数据集为工作内容的

    编辑和更新数据

除了TDBNavigator构件外 其他数据控件都是用来显示和编辑数据的 这里要介绍怎样编辑数据

要使用户能编辑数据 数据集必须进入dsEdit状态 如果TDataSource的AutoEdit属性设为False 用户不能直接编辑数据 除非程序调用Edit函数

要使用户能够在数据控件中修改数据 必须把数据控件的ReadOnly属性设为False 如果ReadOnly属性设为True 数据控件中显示的数据就是只读的 一般情况下 TDataSource构件的Enabled属性设为True 如果这个属性设为False 数据控件就无法显示数据 更不能修改数据

如果数据集构件的ReadOnly属性设为True 数据集就是只读的 用户在数据控件中所作的修改不能写到数据集中 除了TDBGrid构件外 当用户修改了一个字段的值 还需要把输入焦点移走 新的数据才写到数据集中 在移走输入焦点之前 用户随时可以按ESC键取消修改 在TDBGrid构件建立的栅格中 当用户修改了一个字段的值 还需要把输入焦点移到另一条记录上 新的数据才写到数据集中

禁止和允许数据刷新

当程序正在遍历整个数据集或者搜索一个特定的记录时 应当暂时禁止数据控件刷新数据 这样能加快遍历或搜索的速度 防止屏幕总是在闪烁 调用数据集的DisableControls可以暂时禁止连接这个数据集的数据控件刷新数据 DisableControls函数通常在循环 *** 作前调用 等循环结束后 程序应当立即调用数据集构件的EnableControls函数重新允许刷新数据 为了确保最后总是能恢复刷新 建议采用Try Finally结构 这样 即使在循环中出现异常 也可以保证总能调用EnableControls

下面的代码演示了怎样调用DisableControls和EnableControls函数

CustTable DisableControlsTryCustTable FirstWhile not CustTable EOF DoBegin CustTable NextEndFinallyCustTable EnableControlsEnd

手动刷新数据

调用数据集的Refresh可以读取数据集中最新的数据并刷新数据控件 这个功能在多用户环境尤其有用 因为其他用户有可能已改变了数据集中的数据 有时候 调用Refresh可能会导致意想不到的结果 例如 如果另一个用户已经删除了一条记录 调用Refresh后 这条记录将从数据控件中消失

显示单个字段的数据控件

有的数据控件以数据库的一个或几个字段作为工作内容 如TDBText和TDBEdit 而有的数据控件以整个数据集为工作内容 如TDBGrid和TDBNavigator 显示单个字段的数据控件往往是从一个标准的Windows控件演化而来的 例如 TDBEdit构件就可以认为是TEdit的数据感知版本

把数据作为标签显示

TDBText构件是一个只读的数据控件 它非常类似于TLabel构件和TStaticText构件 TDBText构件能够把数据作为标签显示 用来标注其他控件 例如 可以用一个TDBText构件显示名称(Common_Name字段)

TDBText构件需要指定一个字段 当用户使用导航器或其他手段浏览记录时 TDBText构件显示的数据将自动变化 因为TDBText构件总是显示当前记录的数据

TDBText构件的AutoSize属性一般要设为True 这是因为字段的内容长度可能是不同的 如果AutoSize属性设为False 有些较长的内容可能会被截断

显示和编辑数据

TDBText构件只能显示数据 不能编辑数据 要既能显示数据 又能编辑数据 就要用到TDBEdit构件 TDBEdit可以认为是TEdit的数据感知(Data Aware)版本 例如 有一个TDataSource构件叫CustomersSource 它的DataSet属性指向一个TTable构件叫CustomersTable 把一个TDBEdit构件放在窗体上 其DataSource属性设为CustomersSource 把它的DataField属性设为CustNo 这个TDBEdit构件马上就能显示CustNo字段的值 用户可以在编辑框中键入新的值

显示和编辑多行文本

TDBMemo构件是TMemo构件的数据感知版本 可以显示dBASE和Paradox数据库中备注字段的内容

与TDBEdit不同的是 TDBMemo能够以多行的形式显示文本 同时也允许用户键入多行文本

默认情况下 TDBMemo允许用户修改它显示的文本 如果不想让用户修改文本 只要把ReadOnly属性设为True即可

要允许用户在文本中插入一个制表符 应当把WantTabs属性设为True 否则 当用户按下Tab键 将把输入焦点移走 而不是插入制表符 要限制用户最多可输入的字符数 可以设置MaxLength属性 如果这个属性设为 表示没有限制

此外 ScrollBars属性可以设置要不要加上滚动栏 WordWrap属性可以设置是否允许自动绕回 Alignment属性可以设置文本的对齐方式 在运行期 您可以调用CutToClipboard和CopyToClipboard函数把选择的文本剪切和复制到剪贴板中 调用PasteFromClipboard能够粘贴剪贴板中的文本

lishixinzhi/Article/program/Delphi/201311/8453

连SQL2000数据库的话可以用ADOConnection、ADOQuery、ADODataSet和ADOTable这几个组件。

ADOConnection双击组件就可以选择数据源;

ADOQuery组件和Query组件的使用方法类似,通过SQL属性获取某些数据,满足SQL语句的语法格式,使用方法和ADOTable组件类似,但ADOTable通过TableName属性来定制数据表;

ADODataSet可以直接与一个表进行连接,也可以执行SQL语句,还可以执行存储过程。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10050495.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存