White Whale Studio

[WPF] MSSQL Stored Procedure Connection / WPF - 프로시저와의 연결 본문

IT Engineering/.Net (WPF)

[WPF] MSSQL Stored Procedure Connection / WPF - 프로시저와의 연결

glorymind 2013. 8. 6. 15:08
반응형
WPF - 프로시저와의 연결

 

우선 프로시저의 정의 방법부터 살펴봅니다.

 

SQL  Server Management Studio 에서 저장 프로시저를 생성해보시면 다음과 같은 작성 내용이 나옵니다.

설명에서 보시면 아시겠지만 Ctrl-Shift-M를 누르시면 조금이나마 프로시저의 설명이나 파라미터를 정의하는데

간단하게 입력을 하실수가 있습니다.

세부 컨텐츠 내용은 보시면 아실테고..

 

 ================================================
-- 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

 

위에서 적색으로 표시된 부분이 가장 중요한 부분들입니다. 프로시저 이름을 중복되지 않게 입력을 해주시고

파라미더 부분에는

@Name int      <- 파라미터 이름, 데이터 타입

과 같이 입력해줍니다.

그리고 마지막 적색 부분은 실행될 쿼리를 입력하는 부분입니다. 이 부분은 일반적인 쿼리문과 동일하지만

조건문에서 파라미터의 값을 실제 데이터 대신에 @Name과 같이 연결시켜 주시면 되는것입니다.

 

Select * from stuTable where stu_name = @Name

과 같이 입력하시면 되겠죠.

 

입력을 다 하신뒤 SQL 쿼리문을 실행시키시면 프로시저가 생성이 됩니다.

무슨 이유 때문인지 생성도 분명히 되었고 실행까지도 되는데

호출 시에 프로시저 명 아래에 빨간줄이 끄어지는 경우가 있는데 이러한 경우

생성하신 뒤에 개체 탐색기 창에서 해당 프로시저를 대상으로 Ctrl-Shift-R을 몇 번눌러주시면 해결이 됩니다.

(확실하지는 않습니다만 해당 프로시저 혹은 상위 폴더를 대상으로 눌러주심이..;;;)

 

SQL  Server Management Studio 에서 프로시저 실행 시에는 매우 간단합니다..

 

EXEC 프로시저이름   파라미터로 들어갈 실제 데이터

예시를 들어보면

 

EXEC TEXTPROC "홍길동"

 

이렇게 되겠네요.

 

 

-----------------------------------------------------------------------------------

 

다음은 WPF에서의 프로시저 호출입니다.

기본적인 SQL 연결 부분에 대해서는 상세히 언급하지는 않겠습니다.

using System.Data.SqlClient;

using System.Data;

 

추가 해주시고

SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConnectString; // 연결 문자열을 입력하시면됩니다. 방법에 따라서 조금이 상이하겠죠.

 

SqlCommand cmd = new SqlCommand("_getData", conn);
SqlParameter name = new SqlParameter("@Name", SqlDbType.Int);  // 프로시저에서 정의한 이름과 데이터 타입을 입력해줍니다.
name.Value = 1;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(name);  // 파라미터를 sqlcommand 에 더해줍니다.

 

 

conn.Open(); // 지정된 내용들을 기반으로해서 데이터베이스 연결을 열고
                DataSet ds = new DataSet(); // 데이터셋에 넣는 방법입니다.
                SqlDataAdapter sda = new SqlDataAdapter(cmd); // 어뎁터를 지정하고
                int dt = cmd.ExecuteNonQuery(); // 리턴값으로 받는 방법입니다.
                sda.Fill(ds); // 데이터셋에 집어넣습니다.
conn.Close(); // DB 연결을 닫아줍니다.

                DataTable dt1 = ds.Tables[0];
                DataRow dr = dt1.Rows[0];
                string dr1 = dr["Name"].ToString();

                Console.WriteLine(dr1 + " 반환");

 

 

위와 같이 사용하시면 되겠습니다. 위의 소스 코드는 파라미터를 입력받아서 필요한 데이터 값을 하나 뽑아오는 소스입니다. 정의를 하시고 데이터베이스와의 연결이 제대로 된것인지 확인을 꼭 하신뒤 시험해보시기 바랍니다.

연결도 제대로 안된 DB가지고 프로시저 호출 안된다고 삽질한 결과로 말씀드립니다..ㅠㅠ

 

 

 

반응형
Comments