Delphi與SQL Server存儲過程編程詳解

前言  
        經常有很多初學者問到在delphi中如何調用SQL Server的存儲過程?問題其實很好解決,但問得多了,也就不願答了。下面我將用實例進行說明,從在SQL Server中創建存儲過程到調用的完整實例。
 
        首先,打開sql server管理器,在pubs數據庫中建一個測試表,表名爲test,字段有id,name,和desc,全部爲字符型,如果你不知道建表,那麼打開sql查詢分析器,貼上以下的代碼,然後按執行,就會自動生成test表.
use pubs
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[test]
GO
 
CREATE TABLE [dbo].[test] (
 [id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [name] [char] (12) COLLATE Chinese_PRC_CI_AS NULL ,
 [descrip] [char] (30) COLLATE Chinese_PRC_CI_AS NULL  
) ON [PRIMARY]
GO
 
        然後,我們來創建一個存儲過程,其功能爲在test中插入一條新記錄.創建存儲過程的代碼如下,同樣的,你也可以複製到查詢分析器裏直接執行就可以:
CREATE PROCEDURE myInsert  
@id char(10) ,
@name varchar(12),  
@descrip varchar(30)
 
AS
begin
 
insert into test (id,name,descrip) values (@id,@name,@descrip)
 
if @@rowcount=0
begin
  raiserror('error',16,1)
  rollback transaction
end
end
GO
 
        接下來,新建一個工程文件,在form1上放置如下控件,並設置屬性(括號內):
一個ADOConnection1: TADOConnection;
      (LoginPrompt:=false;
       connectionstring:=Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=(local);)

一個ADOStoredProc1: TADOStoredProc;屬性爲:
      (connection:=adoconnection1;
       procedurename:=myinsert;//上面我們創建的那個)

一個ADOTable1: TADOTable;屬性爲:
      (connection:=adoconnection1;
      tablename:=test;    //上面我們創建的那個)

一個Datasource1,屬性爲:
     (dataset:=Tadotable;)

一個 DBGrid1: TDBGrid;屬性爲
     (datasource:=datasource1;)

一個Button1,在其Onclick中寫到:
  with adoStoredproc1 do
  begin
    Parameters.ParamByName('@id').Value := '2';
    parameters.ParamByName('@name').Value := 'myname';
    parameters.ParamByName('@descrip').Value :='nosubject';
    ExecProc;
  end;
  Adotable1.Close;
  adotable1.Open;
 
        好了,整個過程就是這樣,明白了嗎,嘿嘿
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章