程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Delphi與SQLServer存儲過程編程詳解

Delphi與SQLServer存儲過程編程詳解

編輯:關於SqlServer
 前言
  
  經常有很多初學者問到在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;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved