在Delphi中使用原生ADO控制数据库

本文介绍如何在Delphi编程环境中,通过原生的ADO组件连接和操作数据库,包括设置连接字符串、执行SQL命令以及处理查询结果。通过实例展示了如何使用ADO的Command对象来执行增删改查操作,深入理解Delphi与数据库交互的基本过程。
摘要由CSDN通过智能技术生成
[日期:2006-07-15] 来源:  作者: [字体: ]
我发现很多朋友在开发数据库时都使用 delphi 自带的 ADO 组件 或 Diamond ADO,其实在 delphi 中使用原生 ADO 接口也是十分方便和有效的。我使用原生 ADO 开发项目已有很长一段时间,也回答过一些朋友类似的问题,现在把自己的一点心得与大家分享,班门弄斧,只是希望能对大家有所帮助。当然,这帖子也是原生的,不是转贴的。
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-0208493183109887&dt=1188970934765&lmt=1165893810&prev_fmts=468x60_as&format=336x280_as&output=html&correlator=1188970928281&channel=3214794117&pv_ch=3214794117%2B&url=http%3A%2F%2Fwww.wangwa.com%2Finfo%2F2006-07%2F660.htm&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=008000&color_border=FFFFFF&ad_type=text_image&ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fq%3Dcreateoleobject%26complete%3D1%26hl%3Dzh-CN%26inlang%3Dzh-CN%26newwindow%3D1%26start%3D10%26sa%3DN&cc=100&ga_vid=270781720.1188970928&ga_sid=1188970928&ga_hid=1036898396&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> <script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-0208493183109887&dt=1188970934828&lmt=1165893810&prev_fmts=468x60_as%2C336x280_as&format=336x280_as&output=html&correlator=1188970928281&channel=3214794117&pv_ch=3214794117%2B&url=http%3A%2F%2Fwww.wangwa.com%2Finfo%2F2006-07%2F660.htm&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=008000&color_border=FFFFFF&ad_type=text_image&ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fq%3Dcreateoleobject%26complete%3D1%26hl%3Dzh-CN%26inlang%3Dzh-CN%26newwindow%3D1%26start%3D10%26sa%3DN&cc=100&ga_vid=270781720.1188970928&ga_sid=1188970928&ga_hid=1036898396&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency">

一、优点
1、大家知道 delphi 对 ADO 接口进行了一番包装后形成了 ADOExpress,我想 Borland 的主要目的还是想与自己的数据敏感控件相连。然而事实上数据敏感控件并不是那么耀眼,如果你希望你编出来的程序稍微有点水准的话那就别用那玩意;如果你很少使用数据敏感控件,那么 ADOExpress 基本上失去了其应有的作用,无数冗余的属性、虚方法,不管你用不用得到一股脑给你编译进去,也会使你的程序再大上 200K;效率么,不说了。
2、MSDN 和 VB 中的例子你可以搬过来就用。
3、告诉那些 delphi 反对者, delphi 不是离开组件就活不了。
4、关于代码重用:我给大家的例子都是以函数或过程形式,重用性不好么?
5、别说帖子太长,那你看看 DB.pas, ADODB.pas 多长?

二、基本储备
1、一些必须的单元
uses
  Variants, ComObj;

2、一些基本常数(其它查 ADODB2000.pas):
const
  adOpenDynamic = $00000002;
  adOpenStatic = $00000003;

  adLockOptimistic = $00000003;
  adLockBatchOptimistic = $00000004;

  adStateClosed = $00000000;
  adStateOpen = $00000001;
  adStateConnecting = $00000002;
  adStateExecuting = $00000004;
  adStateFetching = $00000008;

  adUseServer = $00000002;
  adUseClient = $00000003;

  adModeReadWrite = $00000003;

  adXactCursorStability = $00001000;

  adCmdText = $00000001;
  adCmdTable = $00000002;
  adCmdStoredProc = $00000004;
  adCmdFile = $00000100;

  adAffectCurrent = $00000001;
  adAffectGroup = $00000002;
  adAffectAll = $00000003;
  adAffectAllChapters = $00000004;

3、一些基本函数和过程
//创建 Connection 对象
function CreateConnection: OleVariant;
//释放 Connection 对象;cnn 为 Connection 对象
procedure FreeConnection(var cnn: OleVariant);
//创建 Recordset 对象
function CreateRecordset: OleVariant;
//释放 Recordset 对象;rst 为 Recordset 对象
procedure FreeRecordset(var rst: OleVariant);
//创建 Command 对象
function CreateCommand: OleVariant;
//释放 Command 对象;cmd 为 Command 对象
procedure FreeCommand(var cmd: OleVariant);
//用 Connection 连接到 SQLServer 数据库;cnn 为 Connection 对象,db 数据库名,host 主机名,usr 用户名,pwd 密码
function ConnectToDB(cnn: OleVariant; const db, host, usr, pwd: string): Boolean;
//执行 SQL 语句,有返回行,无事务处理;cnn 为 Connection 对象,rst 为 Recordset 对象,sql 为 SQL 语句(可以是存储过程)
function ExecSQL(cnn, rst: OleVariant; const sql: string): Boolean;
//执行 SQL 语句,无返回行,有事务处理;cnn 为 Connection 对象,cmd 为 Command 对象,sql 为 SQL 语句(可以是存储过程)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值