学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Delphi >> 在DEPHI程序中使用ADO对象存取ODBC数续


在DEPHI程序中使用ADO对象存取ODBC数续


p>3.其它常见对象(与Delphi对应的对象):

ADODB.Field:TField ADODB.Parameter:
   TPara ADODB.Error:EDBEngineError
ADODB.Command:无 ADODB.Property:无

  下面来看一个应用例子,听别人说总不如自己看实际的例子来体会。在这个例子中,将演示如何利用ADO对象来对一个数据表进行查询、增加记录、修改记录和删除记录操作。具体的用法请参见程序中的注释,如果有点Delphi数据库编程经验,相信不难理解。
  在我们的例子使用的数据库为Test.MDB,其中有一个数据表为wfjcommu,有五个字段AName、Portable、Tel、BP、PostAddress,分别表示姓名、手机号、电话号码、呼机号码和通信地址。
procedure TForm1.Button1Click(Sender: TObject);
{*****************************************************
  用ADO操作ODBC数据库本程序中,将创建一个临时的ODBC系统数据源,指向一个MsAccess数据库,然后对其中的数据表进行显示、增加、修改、删除和查询操作注意:请在Uses语句中包含ComObj单元
*****************************************************}

const{ 一些常量声明,详细请参见adovbs.inc }
{ ---- CommandType的常量说明 ---- }

adCmdUnknown = 0008;//未知,
需要系统来判断,速度慢,为缺省值
adCmdText = 0001;//命令语句如SQL语句
adCmdTable = 0002;//数据表名称
adCmdStoredProc = 0004;//存储过程名称

{ ---- CursorType的常量说明 ---- }

adOpenForwardOnly = 0;//只能由前向后单向访问,为缺省值
adOpenKeyset = 1;//可见其他用户对数据的修改,
但对其它用户的增加和删除不可见
adOpenDynamic = 2;//其他用户对数据的增加修改和删除均可见
adOpenStatic = 3;//其他用户对数据的增加修改和删除均不可见

{---- LockType的常量说明 ---}

adLockReadOnly = 1;//只读,为缺省值
adLockPessimistic = 2;//在修改时,按单个记录锁定
adLockOptimistic = 3;//在修改后更新时,按单个记录锁定
adLockBatchOptimistic = 4;//在成批更新时记录锁定
var
AConnection, ARecordSet variant;
longintTemp : integer;
strTemp : string;
intIndex : integer;
begin

{创建一个临时的ODBC数据源,向一个MsAccess数据库,利用此DSN建立一个数据库连接}

AConnection := CreateOleObject(ADODB.Connection);
AConnection.Open(Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\inetpub\wwwroot\test);

{建立一个数据集对象,并从数据表中提取数据}

ARecordSet := CreateOleObject(ADODB.RecordSet);
ARecordSet.open( wfjcommu,AConnection,
adOpenStatic,adLockOptimistic,adCmdTable );
memo1.lines.clear;
memo1.lines.add(********数据表原有的内容如下********);

{显示各个域的域名}

strTemp := ;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].name+;;
memo1.lines.add( strTemp );

{显示各个域的内容}

while not ARecordSet.eof do
begin
strTemp := ;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields
[intIndex].value+;;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下条,Next
end;

{增加一个记录}

ARecordSet.AddNew;//增加,Append
ARecordSet.Fields[AName] := 1;
//以FieldByName的方式存取
ARecordSet.Fields[Portable] := 2;
ARecordSet.Fields(2) := 3;
//以Fields[index]的方式存取
ARecordSet.Fields(3) := 4;
ARecordSet.Fields(4) := 5;
ARecordSet.Update;//更新,Post
ARecordSet.MoveFirst;//移到首条,First
memo1.lines.add(********增加了一条记录后的数据表的内容如下********);

{显示各个域的内容}

while not ARecordSet.eof do
begin
strTemp := ;
for intIndex := 0 to ARecordSet.
Fields.count - 1 do
strTemp := strTemp +
ARecordSet.Fields[intIndex].value+;;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下条,Next
end;

{修改最后一条记录}

ARecordSet.MoveLast;
ARecordSet.Fields[AName] := 11;
//以FieldByName的方式存取
ARecordSet.Fields[Portable] := 22;
ARecordSet.Fields(2) := 33;
//以Fields[index]的方式存取
ARecordSet.Fields(3) := 44;
ARecordSet.Fields(4) := 55;
ARecordSet.Update;//更新,Post
ARecordSet.MoveFirst;//移到首条,First
memo1.lines.add(********修改了最后一条记录后的数据表的内容如下********);

{显示各个域的内容}

while not ARecordSet.eof do
begin
strTemp := ;
for intIndex := 0 to
ARecordSet.Fields.count - 1 do
strTemp := strTemp +
ARecordSet.Fields[intIndex].value+;;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下条,Next
end;

{删除最后一条记录}

ARecordSet.MoveLast;//移到末条,Last
ARecordSet.delete;//删除,delete
ARecordSet.Update;//更新,在Delphi不需要
ARecordSet.MoveFirst;//移到首条,First
memo1.lines.add(********删除了最后一条记录后的数据表的内容如下********);

{显示各个域的内容}

while not ARecordSet.eof do
begin
strTemp := ;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.
Fields[intIndex].value+;;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下条,Next
end;

ARecordSet.Close;{关闭数据集}
{用SQL语句进行查询,查询姓名为“张三”的记录}
{注意,在SQL语句中,字符串应该用单引号包括起来}

ARecordSet.open( select * from wfjcommu
where AName = 张三,
AConnection,adOpenStatic,adLockOptimistic,
adCmdText );
memo1.lines.add(********张三的内容如下********);
memo1.lines.add( 共有 + IntToStr( ARecordSet.RecordCount ) + 条匹配的记录 );

{显示各个域的内容}

while not ARecordSet.eof do
begin
strTemp := ;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields
[intIndex].value+;;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下条,Next
end;

{关闭数据集和数据库连接}

ARecordSet.close;
AConnection.close;
end;

  以上程序在PWIN98+DELPHI3.0+PWS(Personal Web Server)4.0下调试通过.关于ADO对象的详细资料,请参见ASP帮助文件或Interdev帮助文件或OFFICE2000的有关文档.
 



技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"在DEPHI程序中使用ADO对象存取ODBC数续"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 在DEPHI程序中使用ADO对象存取ODBC数续 相关内容
Google搜索中 在DEPHI程序中使用ADO对象存取ODBC数续 相关内容
雅虎中 在DEPHI程序中使用ADO对象存取ODBC数续 相关内容
Sogou搜索中 在DEPHI程序中使用ADO对象存取ODBC数续 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 在DEPHI程序中使用ADO对象存取ODBC数续相关文章
在DELPHI程序中使用ADO对象存取ODBC数 在DELPHI程序中动态设置ODBC数据源
精简DELPHI数据库系统的补充 如何对数据流 INSERT、APPEND
定制任务栏上的系统菜单 活用 SetSelTextBuf
捕捉来自 Thread 的异常 在DEPHI 4.0中实现动画功能
修改与克隆对象属性 控制系统菜单
怎样建立简单的任务栏应用程序 用修改文件时间的方法来加密文件
用Dephi程序维护Paradox 数据表的索引 有“背景”的窗体
自定义快速报表的打印预览窗口 用Delphi实现自定义颜色对话框及其构件
Delphi实用编程经验二则