All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP实例:用PHP程序实现随机广告图片显示_[PHP教程]
十七 翻新标准_[Html教程]
PHP判断搜索引擎机器人Robot_[PHP教程]
关于C#中timer类,在C#里关于定时器类就有3个_[Asp.Net教程]
asp.net,URL重写(URLRewriter),之简化版_[Asp.Net教程]
Asp.Net,加密示例_[Asp.Net教程]
教你如何快速捕获.NET代码中隐藏的BUG_.net资料_编程技术
C#教程: 注册表的结构
Session丢失原因与解决方案小结_[Asp.Net教程]
正确实现,IDisposable,接口_[Asp.Net教程]
Reading number is top 10 pictures
Startling Russian girl blind date scene2
9.3阅兵全景图5-地空反舰导弹梯队
The real super beauty4
中国的阶级现状
Fat bird to fly
粉红蕾丝的美女
Chinese paper-cut grilles art appreciation1
Soong ching ling's former residence2
Sanya, hainan Haitian party feast promiscuity
Look for from human art net, is good--3
Download software ranking
打鸟视频
Eclipse 4.2.2 For Win32
Red cliff
WebService在.NET中的实战应用教学视频 → 第4集
Tram sex maniac 2 (H) rar bag19
株洲本地在线棋牌游戏
Tram sex maniac 2 (H) rar bag10
实战黑客不求人
DreamWeaver8
卡丁车单机版
aaa published in(发表于) 2014/7/19 0:09:08 Edit(编辑)
delphi中使用游标处理数据

delphi中使用游标处理数据

delphi中使用游标处理数据

游标

1.使用存储过程调用游标读取数据

声明并打开游标后,执行FETCH语句可以读取数据。声明一个滚动游标,执行FETCH语句,则可以实现使用游标按指定行读取数据集中的数据。

例如,读取数据集中第一行数据。

SQL.Add('FETCH First FROM 游标名称')

例如,读取游标所在当前位置的上一行数据。

SQL.Add('FETCH prior FROM 游标名称')

例如,读取游标所在当前位置的下一行数据。

SQL.Add('FETCH Next FROM 游标名称')

例如,读取数据集中最后一行数据。

SQL.Add('FETCH Last FROM 游标名称')

例如,读取数据集中的任意一行数据。

SQL.Add('FETCH absolute 行数 FROM 游标名称');

下面利用本地临时存储过程(#PRO_YB)来创建一个游标,并通过调用临时存储过程对当前记录的首记录、尾记录和任意行记录进行读取操作。

操作步骤如下:

(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TADODataSet、TDataSource、TButton、和TDBGrid等组件。

(2)主要程序代码如下:

用临时存储过程创建游标。

with ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('CREATE PROCEDURE #PRO_YB'); //创建本地临时存储过程

SQL.Add('@Int Integer,'); //自定义参数

SQL.Add('@Row Integer');

SQL.Add('AS');

SQL.Add('DECLARE ReadCursor scroll CURSOR FOR'); //创建游标

SQL.Add('select * from MR_student');

SQL.Add('OPEN ReadCursor'); //打开游标

SQL.Add('if @Int=1');

SQL.Add(' FETCH First FROM ReadCursor'); //首记录

SQL.Add('if @Int=2');

SQL.Add(' FETCH Last FROM ReadCursor'); //尾记录

SQL.Add('if @Int=3');

SQL.Add(' FETCH absolute @Row FROM ReadCursor'); //任意行的记录

SQL.Add('CLOSE ReadCursor'); //关闭游标

SQL.Add('DEALLOCATE ReadCursor'); //释放游标

EXECSQL;

end;

调用临时存储过程,并分别执行首记录、尾记录和读取任意行记录。

case Int of

1: begin //首记录

ADODataSet1.Active :=False;

ADODataSet1.CommandText := 'EXEC #PRO_YB 1,0';

ADODataSet1.Active :=True;

end;

2: begin //尾记录

ADODataSet1.Active :=False;

ADODataSet1.CommandText := 'EXEC #PRO_YB 2,0';

ADODataSet1.Active :=True;

end;

3: begin //任意行记录

if Edit1.Text<>'' then

begin

ADODataSet1.Active :=False;

ADODataSet1.CommandText := 'EXEC #PRO_YB 3,'+Edit1.Text;

ADODataSet1.Active :=True;

end

else

showmessage('请填写查询行数。');

end;

end;

2.使用游标添加和修改记录

使用游标添加和修改数据的操作步骤是一样的,首先要声明一个游标并打开该游标,然后用INSERT INTO语句和UPDATE SET语句对数据进行添加和修改,最后关闭并释放游标。在修改数据时,要用@@fetch_status函数判断要修改的数据是否存在,如果该函数返回为0,则修改该数据。

下面用游标添加和修改记录。

操作步骤如下:

(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TMemo、TDataSource、TButton、和TDBGrid等组件。

(2)主要程序代码如下:

使用游标添加数据。

with ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('DECLARE UB_Insert CURSOR FOR'); //声明一个游标

SQL.Add('select * from MR_Table');

SQL.Add('OPEN UB_Insert'); //打开游标

//使用游标添加数据

SQL.Add('INSERT INTO MR_Table (id,name,sex,memo) VALUES ('''+Edit1.Text+''','''+Trim(Edit2.Text)+''','''+ Trim(Combobox1.Text)+''','''+memo1.Lines.Text+''')');

SQL.Add('CLOSE UB_Insert'); //关闭游标

SQL.Add('DEALLOCATE UB_Insert'); //释放游标

EXECSQL;

end;

使用游标修改数据。

with ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('DECLARE UB_Update CURSOR FOR'); //声明一个游标

SQL.Add('select * from MR_Table where id='+Edit3.Text);

SQL.Add('OPEN UB_Update'); //打开游标

SQL.Add('if @@FETCH_STATUS=0'); //用@@FETCH_STATUS判断当前是否有记录

SQL.Add('begin');

//使用游标修改数据

SQL.Add(' Update MR_Table SET name= '+Quotedstr(Trim(Edit4.Text))+ ',sex= '+Quotedstr(Trim(Combobox2.Text))+ ' where id='+Edit3.Text);

SQL.Add('end');

SQL.Add('CLOSE UB_Update'); //关闭游标

SQL.Add('DEALLOCATE UB_Update'); //释放游标

EXECSQL;

end;

3.使用游标删除指定记录

声明一个SQL Server数据库游标,打开游标,然后读取游标所在当前行,使用游标函数@@fetch_status判断游标的当前状态,如果游标读取数据成功,@@fetch_status函数将返回数值0,然后使用DELETE语句删除指定行的记录。

下面使用游标删除符合条件的记录行。

操作步骤如下:

(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TComboBox、TDataSource、TButton、和TDBGrid等组件。

(2)主要程序代码如下:

with ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('DECLARE UB_delete CURSOR FOR'); //声明一个游标

SQL.Add('select * from '+Combobox1.Text+' where '+Combobox2.Text+Combobox3.Text+''''+Edit1.Text+'''');

SQL.Add('OPEN UB_delete'); //打开游标

SQL.Add('FETCH UB_delete'); //执行取数操作

SQL.Add('if @@FETCH_STATUS=0'); //用@@FETCH_STATUS判断当前是否有记录

SQL.Add('begin');

SQL.Add(' delete from '+Combobox1.Text+' where '+Combobox2.Text+Combobox3.Text+''''+Edit1.Text+'''');

SQL.Add('end');

SQL.Add('CLOSE UB_delete'); //关闭游标

SQL.Add('DEALLOCATE UB_delete'); //释放游标

EXECSQL;

end;




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.