Delphi中如何调用存储过程?

世界杯开始 2025-07-07 03:58:10

估计有很多朋友用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;