1. 程式人生 > >【C#機房重構】之儲存過程實戰

【C#機房重構】之儲存過程實戰

        在上一篇的文章中,講述了一下儲存過程是什麼,今天這篇文章主要就是自己在實戰過程中遇到的問題和解決方法以及是怎麼進行實戰的。

        首先上一個連結:儲存過程,讓小夥伴們先了解一下什麼是儲存過程。

        接下來就是看一下儲存過程在SQL Server資料庫中的程式碼模板:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
	-- Add the parameters for the stored procedure here
	<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
	<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO

        那麼如何建立儲存過程呢?

步驟:開啟需要建立儲存過程的資料庫(CRRData)

            可程式設計性

            儲存過程

            左擊-儲存過程(2014版本的,其他版本為新建儲存過程)

如圖:


        這樣就會出現上面所述的儲存過程程式碼模板。

       接下來,就是我在進行註冊時,所建立的儲存過程程式碼:

USE [CRRData]
GO
/****** Object:  StoredProcedure [dbo].[PROC_Register]    Script Date: 2017-08-26 16:15:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:<Author,陳新月>
-- Create date: <2017-8-20>
-- Description:	<註冊>
-- =============================================
CREATE PROCEDURE [dbo].[PROC_Register]
	-- Add the parameters for the stored procedure here
	@cardno int,
	@cash decimal(18,2),
	@userid int,
	@status char(50),
	@ischeck char(10),
	@date date,
	@time time(7),
	@studentno int,
	@studentname char(50),
	@sex char(10),
	@department char(10),
	@grade char(10),
	@classes char(10),
	@explain char(50),
	@type char(10)	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	--新增SQL語句
	select * from Card_Info where 
[email protected]
if @@ROWCOUNT=0 -- Insert statements for procedure here --在表card_Info中新增資訊 insert into Card_Info(cardno,cash,status,userid,ischeck,date,time) values (@cardno,@cash,@status,@userid,@ischeck,@date,@time) --在表Student_Info中新增資訊 insert into Student_Info(cardno,studentname,studentno,department,grade,sex,classes,explain,type) values (@cardno,@studentname,@studentno,@department,@grade,@sex,@classes,@explain,@type) --在表Recharge_Info中新增資訊 insert into Recharge_Info(cardno,studentno,addmoney,date,time,userid,status) values (@cardno,@studentno,@cash,@date,@time,@userid,@status) END

        儲存時或者說點選!執行時,會出現一個儲存檔案的對話方塊,這時候就要注意你要儲存的路徑了,一般情況下預設的儲存路徑會是在你想要建立的資料庫下,但是還有不一般的情況,那就是當你儲存在預設的儲存路徑時,在自己想要建立的資料庫下反而重新整理不出來,這時你會驚奇的發現你的儲存過程在其他的資料庫中,這時就要注意的你的檔案儲存的路徑問題了

那麼在D層中是如何使用呢?

 string sql = "PROC_Register"; //儲存過程名稱
 int registercard = sqlhelper.ExecuteNonQuery(sql, CommandType.StoredProcedure, sqlParams);           
 return registercard;
        好了,就總結到這裡。對於一個新的事物,不僅要了解到是什麼,還要總結如何做。