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

华语频道66

华语频道66

2016-02-19 17:25

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的在DEPHI程序中使用ADO对象存取ODBC数续教程,一起来看看吧!超容易上手~

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

  ADODB.Field:TField ADODB.Parameter:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  TPara ADODB.Error:EDBEngineError

  ADODB.Command:无 ADODB.Property:无

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  下面来看一个应用例子,听别人说总不如自己看实际的例子来体会。在这个例子中,将演示如何利用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;//在成批更新时记录锁定varAConnection, 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:inetpubwwwroottest); {建立一个数据集对象,并从数据表中提取数据} 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 dostrTemp := strTemp + ARecordSet.Fields[intIndex].name+;;memo1.lines.add( strTemp ); {显示各个域的内容} while not ARecordSet.eof dobeginstrTemp := ;for intIndex := 0 to ARecordSet.Fields.count - 1 dostrTemp := strTemp + ARecordSet.Fields[intIndex].value+;;memo1.lines.add( strTemp );ARecordSet.MoveNext;//移到下条,Nextend; {增加一个记录} ARecordSet.AddNew;//增加,AppendARecordSet.Fields[AName] := 1;//以FieldByName的方式存取ARecordSet.Fields[Portable] := 2;ARecordSet.Fields(2) := 3;//以Fields[index]的方式存取ARecordSet.Fields(3) := 4;ARecordSet.Fields(4) := 5;ARecordSet.Update;//更新,PostARecordSet.MoveFirst;//移到首条,Firstmemo1.lines.add(********增加了一条记录后的数据表的内容如下********); {显示各个域的内容} while not ARecordSet.eof dobeginstrTemp := ;for intIndex := 0 to ARecordSet.Fields.count - 1 dostrTemp := strTemp +ARecordSet.Fields[intIndex].value+;;memo1.lines.add( strTemp );ARecordSet.MoveNext;//移到下条,Nextend; {修改最后一条记录} 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;//更新,PostARecordSet.MoveFirst;//移到首条,Firstmemo1.lines.add(********修改了最后一条记录后的数据表的内容如下********); {显示各个域的内容} while not ARecordSet.eof dobeginstrTemp := ;for intIndex := 0 toARecordSet.Fields.count - 1 dostrTemp := strTemp +ARecordSet.Fields[intIndex].value+;;memo1.lines.add( strTemp );ARecordSet.MoveNext;//移到下条,Nextend; {删除最后一条记录} ARecordSet.MoveLast;//移到末条,LastARecordSet.delete;//删除,deleteARecordSet.Update;//更新,在Delphi不需要ARecordSet.MoveFirst;//移到首条,Firstmemo1.lines.add(********删除了最后一条记录后的数据表的内容如下********); {显示各个域的内容} while not ARecordSet.eof dobeginstrTemp := ;for intIndex := 0 to ARecordSet.Fields.count - 1 dostrTemp := strTemp + ARecordSet.Fields[intIndex].value+;;memo1.lines.add( strTemp );ARecordSet.MoveNext;//移到下条,Nextend; ARecordSet.Close;{关闭数据集}{用SQL语句进行查询,查询姓名为张三的记录}{注意,在SQL语句中,字符串应该用单引号包括起来} ARecordSet.open( select * from wfjcommuwhere AName = 张三,AConnection,adOpenStatic,adLockOptimistic,adCmdText );memo1.lines.add(********张三的内容如下********);memo1.lines.add( 共有 + IntToStr( ARecordSet.RecordCount ) + 条匹配的记录 ); {显示各个域的内容} while not ARecordSet.eof dobeginstrTemp := ;for intIndex := 0 to ARecordSet.Fields.count - 1 dostrTemp := strTemp + ARecordSet.Fields[intIndex].value+;;memo1.lines.add( strTemp );ARecordSet.MoveNext;//移到下条,Nextend; {关闭数据集和数据库连接}ARecordSet.close;AConnection.close;end; 

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
在DEPHI程序中使用ADO对象存取ODBC数续

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

编程语言 网络编程
在DELPHI程序中使用ADO对象存取ODBC数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在Dephi中使用TStream读写数据的技巧

编程语言 网络编程
在Dephi中使用TStream读写数据的技巧

在VB中使用文件对象

编程语言 网络编程
在VB中使用文件对象

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在Windows版的PHP中使用ADO

PHP
在Windows版的PHP中使用ADO

在CorelDRAW中使用渐变填充对象

Illustrator CorelDRAW
在CorelDRAW中使用渐变填充对象

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

DIV下图片自适应解决方法

DIV下图片自适应解决方法

网页制作中段落缩进的5种解决方法

网页制作中段落缩进的5种解决方法
下拉加载更多内容 ↓