|
盒子资源分类 |
![]() |
|
|
|
将ADOQUERY的Parameters存储到流中 |
![]() |
关键字:Ado Parameters 流 |
来 自:原创 |
平 台:Win2k/XP/NT,Win2003 |
下载所需:0 火柴 |
深浅度:中级 |
完成时间:2010/8/5 |
发布者:dcopyboy |
发布时间:2010/8/8 |
编辑器:DELPHI7 |
语 种:简体中文 |
分 类:数据库 |
下载浏览:722/9281 |
|
|
|
|
将ADOQUERY的Parameters存储到流中 将ADOQUERY的Parameters存储到流中在常规的编程开发中用处可能不大,但在基于TCP/IP 套接字模式开发的类三层架构中,如虫虫的远程数据对象,若能采用此法,必将大幅度提高此类对象的使用范围及查询效率。
核心单元WebAdoStream的流读写部分改编自New Midas VCL Library(1.00)的JxStream.pas,为方便与AdoQuery的接口,笔者专门编写了AdoQuerySaveTostream(将ADOQuery的查询语句及Parameters保存到流中)、AdoQueryLoadFromstream(从流中恢复ADOQuery的查询语句及Parameters)2个过程。
演示程序中使用的数据表结构请按下列语句创建: CREATE TABLE [dbo].[test] ( [f1] [float] NULL , [f2] [int] NULL , [f3] [money] NULL , [f4] [numeric](18, 0) NULL , [f5] [real] NULL , [d1] [datetime] NULL , [c1] [char] (10) NULL , [c2] [varchar] (50) NULL , [b1] [ntext] NULL , [b2] [text] NULL , [b3] [image] NULL , [B4] [image] NULL , [id] [int] IDENTITY (1, 1) NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
演示程序中使用的‘本草纲目.txt’及 ‘东阳.jpg’只是比较大的文本及图片,发布时不再跟上。
Dcopyboy Email:dcopyboy@tom.com QQ:445235526 |
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
![]() |
|
相关评论 |
![]() |
共有评论2条
当前显示最后2条评论
|
ke8880 |
2010/8/7 15:23:13 |
我也在一个三层结构中使用到这个这一功能,以下是我实现的Parameter与流的转换 procedure ParamsToStream(Params: TParams; var Strm: TStream); var I: SmallInt; PM: TParam; prmName: string; nSize: Integer; ftp: TFieldType; Pnt: Pointer; begin //写入ParamCount nSize := Params.Count; Strm.Write(nSize, SizeOf(nSize)); //获取Param for I := 0 to Params.Count - 1 do begin PM := Params[I]; //写入参数名称 prmName := PM.Name; nSize := Length(prmName); Strm.Write(nSize, SizeOf(nSize)); Strm.Write(prmName[1], nSize); //写入数据类型 ftp := PM.DataType; Strm.Write(ftp, SizeOf(ftp)); //写入数据体 nSize := PM.GetDataSize; Pnt := AllocMem(nSize); PM.GetData(Pnt); Strm.Write(nSize, SizeOf(nSize)); Strm.Write(Pnt^, nSize); FreeMem(Pnt); end; Strm.Position := 0; end;
procedure StreamToParams(Strm: TStream; Params: TParams); var I: SmallInt; prmCount, nSize: Integer; prmName: string; prmType: TFieldType; Pnt: Pointer; PM: TParam; begin //读取Param总数 Strm.Position := 0; Strm.Read(prmCount, SizeOf(prmcount)); //读取Param for I := 0 to prmCount - 1 do begin //读取参数名称 Strm.Read(nSize, SizeOf(nSize)); SetLength(prmName, nSize); Strm.Read(pchar(prmName)^, nSize); //读取数据类型 Strm.Read(prmType, SizeOf(prmType)); //读取数据体 Strm.Read(nSize, SizeOf(nSize)); Pnt := AllocMem(nSize); Strm.Read(Pnt^, nSize);
PM := Params.CreateParam(prmType, prmName, ptInput);
PM.SetData(Pnt); FreeMem(Pnt); end; end; |
paopao7985 |
2010/8/9 15:30:44 |
不错 和我用的一样 |
我要发表评论 |
查看全部评论 |
![]() |
|
|
|