Delphi中如何调用存储过程?
2013-12-17 21:34
477 查看
估计有很多朋友用delphi写过与SQL Server 2000数据结合的一些MIS系统,对于大量的数据保存,及数据更新.常常考虑到用存储过程来实现...今天我写了一个简单的例子,希望能给一些朋友一点帮助....
1、当然,我们要在SQL SERVER 2000中建好我们的数据库及数据表。我这里用的数据库是reg_nis,其中我新建了一张表叫kevin(ID Int not null,test nvarchar(50),test2 nvarchar(50))其中有三个字段,ID是自动增长,增长率为1。
2、当然用到存储过程,必须先在SQL SERVER 2000中建好必要的存储过程。我建立了4个存储过程,功能分别是插入数据,修改数据,删除数据,查找数据。一般MIS系统中用到也就这些。(1)、插入数据存储过程:
CREATE PROCEDURE [InsertKevin]
(@test nvarchar(50),@test2 nvarchar(50)) AS
insert into kevin(test,test2)
values
(@test,@test2)
GO
(2)、修改数据存储过程:
CREATE PROCEDURE [UpdateKevin]
(@id int,@test nvarchar(50),@test2 nvarchar(50))
AS
update kevin set test=@test,test2=@test2 where [ID]=@id
GO
(3)删除数据存储过程:
CREATE PROCEDURE [DeleteKevin]
(@id int)
AS
delete from kevin where [ID]=@id
GO
(4)、查找数据存储过程
CREATE PROCEDURE [FindKevin]
(@id int)
AS
select * from kevin where [ID]=@id
GO
3、接下来,就在Delphi7中新建一个工程了。用一个ADOConnection1控件连接到数据库Reg_Nis。再放一个ADOStoredProc1控件,执行存储过程的。
我将ADOConnection1更名为ADOCnn,将ADOStoredProc1更名为ADOSP
主要代码:
procedure TmainForm.FormCreate(Sender: TObject);
begin
ADOSP.Connection:=ADOCnn;//将ADOSP连接到ADOCnn
end;
procedure TmainForm.WriteClick(Sender: TObject);
begin
//注意,调用存储过程时,要按参数出现的顺序.
//调用插入数据的存储过程
with adoSP do
begin
Close;
ProcedureName:='InsertKevin';
Parameters.Clear;
Parameters.CreateParameter('test',ftString,pdInput,50,'abc');
Parameters.CreateParameter('test2',ftString,pdInput,50,'fff');
ExecProc;
end;
//调用修改数据的存储过程
with adoSP do
begin
CLose;
ProcedureName:='UpdateKevin';
Parameters.Clear;
Parameters.CreateParameter('ID',ftInteger,pdInput,1,15);
Parameters.CreateParameter('test',ftString,pdInput,50,'eee');
Parameters.CreateParameter('test2',ftString,pdInput,50,'ddd');
ExecProc;
end;
//调用删除数据的存储过程
with adoSP do
begin
CLose;
ProcedureName:='DeleteKevin';
Parameters.Clear;
Parameters.CreateParameter('ID',ftInteger,pdInput,1,15);
ExecProc;
end;
//调用查找数据的存储过程
with adoSP do
begin
CLose;
ProcedureName:='FindKevin';
Parameters.Clear;
Parameters.CreateParameter('ID',ftInteger,pdInput,1,3);
// ExecProc;//在执行命令的存储过程中用ExecProc
Open; //在查询的存储过程时,用OPEN;也可用
end;
// edit1.Text :=adoSP.Parameters[0].Value;
end;
1、当然,我们要在SQL SERVER 2000中建好我们的数据库及数据表。我这里用的数据库是reg_nis,其中我新建了一张表叫kevin(ID Int not null,test nvarchar(50),test2 nvarchar(50))其中有三个字段,ID是自动增长,增长率为1。
2、当然用到存储过程,必须先在SQL SERVER 2000中建好必要的存储过程。我建立了4个存储过程,功能分别是插入数据,修改数据,删除数据,查找数据。一般MIS系统中用到也就这些。(1)、插入数据存储过程:
CREATE PROCEDURE [InsertKevin]
(@test nvarchar(50),@test2 nvarchar(50)) AS
insert into kevin(test,test2)
values
(@test,@test2)
GO
(2)、修改数据存储过程:
CREATE PROCEDURE [UpdateKevin]
(@id int,@test nvarchar(50),@test2 nvarchar(50))
AS
update kevin set test=@test,test2=@test2 where [ID]=@id
GO
(3)删除数据存储过程:
CREATE PROCEDURE [DeleteKevin]
(@id int)
AS
delete from kevin where [ID]=@id
GO
(4)、查找数据存储过程
CREATE PROCEDURE [FindKevin]
(@id int)
AS
select * from kevin where [ID]=@id
GO
3、接下来,就在Delphi7中新建一个工程了。用一个ADOConnection1控件连接到数据库Reg_Nis。再放一个ADOStoredProc1控件,执行存储过程的。
我将ADOConnection1更名为ADOCnn,将ADOStoredProc1更名为ADOSP
主要代码:
procedure TmainForm.FormCreate(Sender: TObject);
begin
ADOSP.Connection:=ADOCnn;//将ADOSP连接到ADOCnn
end;
procedure TmainForm.WriteClick(Sender: TObject);
begin
//注意,调用存储过程时,要按参数出现的顺序.
//调用插入数据的存储过程
with adoSP do
begin
Close;
ProcedureName:='InsertKevin';
Parameters.Clear;
Parameters.CreateParameter('test',ftString,pdInput,50,'abc');
Parameters.CreateParameter('test2',ftString,pdInput,50,'fff');
ExecProc;
end;
//调用修改数据的存储过程
with adoSP do
begin
CLose;
ProcedureName:='UpdateKevin';
Parameters.Clear;
Parameters.CreateParameter('ID',ftInteger,pdInput,1,15);
Parameters.CreateParameter('test',ftString,pdInput,50,'eee');
Parameters.CreateParameter('test2',ftString,pdInput,50,'ddd');
ExecProc;
end;
//调用删除数据的存储过程
with adoSP do
begin
CLose;
ProcedureName:='DeleteKevin';
Parameters.Clear;
Parameters.CreateParameter('ID',ftInteger,pdInput,1,15);
ExecProc;
end;
//调用查找数据的存储过程
with adoSP do
begin
CLose;
ProcedureName:='FindKevin';
Parameters.Clear;
Parameters.CreateParameter('ID',ftInteger,pdInput,1,3);
// ExecProc;//在执行命令的存储过程中用ExecProc
Open; //在查询的存储过程时,用OPEN;也可用
end;
// edit1.Text :=adoSP.Parameters[0].Value;
end;
相关文章推荐
- comport4.11 delphi2010安装教程
- 一个使用特殊符号分割的字符串解码方法(Delphi版)
- 如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码
- Delphi中 为DBNavigator的按钮加中文
- delphi formate
- Delphi调用一个外部程序时,如何把外部程序的窗体放在主程序窗体的Panel上?
- delphi 2010以上 安装 第三方控件
- Delphi备忘录——基本语句
- 【转】Delphi多线程编程
- Delphi备忘录——数据类型
- Delphi陷阱大全,第四波
- Delphi XE5 调用AndroidAPI实现短信发送
- 用DELPHI写的播放器核心代码,播放MP3无压力
- Delphi XE5开发之 Android permission 访问权限大全
- DVD-R-01.我自己搜索收集的一些Delphi免杀远控软件源代码(永久免云杀变种)2013-12-14 11:53:19
- DELPHI OnKeyDown,OnKeyPress,OnKeyUp区别
- Delphi中的线程类
- delphi之多线程编程
- Delphi 类似实现QQ多窗口显示任务栏上
- delphi延时函数