본문 바로가기
C#/윈폼

저장프로시저

by hoshi03 2024. 10. 6.

기존 crud에서 insert 구문을 프로시저를 이용해서 저장이 가능하게 변경하자

 

저장 프로시저를 추가하기 위해

mssql을 켜서 db - 프로그래밍 기능 - 저장 프로시저 - 새 저장 프로시저를 생성한다

 

상단에 저자, 생성일, 내용등을 적어주고

사용할 변수들을 @붙여서 정의

begin 구문 안에 

프로시저로 호출할 쿼리문을 작성한다

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		hoshi03
-- Create date: 2024.10.06
-- Description:	<신규 책 추가 프로시저>
-- =============================================
CREATE PROCEDURE InsertBooks 
	@BOOKNO varchar(20),
	@BOOKNAME varchar(50),
	@BOOKCODE varchar(50)
AS
BEGIN
	-- set nocount를 해 두면 반영된 쿼리 줄이 출력되지 않음, 쿼리문 속도 향상
	SET NOCOUNT ON;

	INSERT BOOKS
	(
	BOOKNO
	,NAME
	,CODE
	)
	VALUES
	(
	@BOOKNO, @BOOKNAME, @BOOKCODE
	);

END
GO

 

만들어둔 insertBOOKS 프로시저를 이용해서 삽입을 실행하는 방식으로 저장 프로시저를 사용했다

 

private void button3_Click(object sender, EventArgs e)
		{
			using (SqlConnection sqlConnection = new SqlConnection(connectionString))
			{
				sqlConnection.Open();
				string bookNo = textBox6.Text;
				string bookName = textBox5.Text;
				string bookCode = textBox7.Text;

				// 저장 프로시저를 가져오고 파라미터 입력해서 실행
                SqlCommand command = new SqlCommand("InsertBOOKS", sqlConnection);
                command.CommandType = CommandType.StoredProcedure;

                SqlParameter p1 = new SqlParameter("@BOOKNO", SqlDbType.VarChar);
                p1.Direction = ParameterDirection.Input;
                p1.Value = bookNo;
                command.Parameters.Add(p1);

                SqlParameter p2 = new SqlParameter("@BOOKNAME", SqlDbType.VarChar);
                p2.Direction = ParameterDirection.Input;
                p2.Value = bookName;
                command.Parameters.Add(p2);

                SqlParameter p3 = new SqlParameter("@BOOKCODE", SqlDbType.VarChar);
                p3.Direction = ParameterDirection.Input;
                p3.Value = bookCode;
                command.Parameters.Add(p3);

                command.ExecuteNonQuery();
                Console.WriteLine("[프로시저호출]InsertBOOKS");
                button4_Click(null, null);

            }
		}

 

• 저장 프로시저를 사용하는 이유

 

저장 프로시저는 한번만 컴파일되고 필요할 때 호출하면 되기에 쿼리 최적화, 트래픽이 감소되고

재사용성, 보안, 로직분리, 무결성, 트랜잭션 관리 등에서 많은 이점이 잇다

쿼리문을 날리는 방법이 복잡해지지만 사용할 수 있게 잘 익혀두자

'C# > 윈폼' 카테고리의 다른 글

프로그램 배포  (0) 2024.10.06
윈폼 CRUD  (0) 2024.09.25
mssql 윈폼 연동  (2) 2024.09.25
사용자 정의 컨트롤러  (0) 2024.09.21
단일 프로세스  (0) 2024.09.21