블로그 이미지
따시쿵

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2015. 7. 7. 10:47 C# with LINQ to SQL
1. 사용할 스토어드 프로시저 작성 합니다.

 

CREATE PROCEDURE dbo.InsertCustomers
@CustomerID nchar(5), 
@CompanyName nvarchar(40), 
@ContactName nvarchar(30), 
@ContactTitle nvarchar(30), 
@Address nvarchar(60), 
@City nvarchar(15), 
@Region nvarchar(15), 
@PostalCode nvarchar(10), 
@Country nvarchar(15), 
@Phone nvarchar(24), 
@Fax nvarchar(24)
AS
BEGIN

	SET NOCOUNT ON;

	INSERT INTO [dbo].[Customers](CustomerID, CompanyName, ContactName, ContactTitle, [Address], City, Region, PostalCode, Country, Phone, Fax)
	VALUES(@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax);
END
GO


CREATE PROCEDURE dbo.UpdateCustomers
@CustomerID nchar(5), 
@CompanyName nvarchar(40), 
@ContactName nvarchar(30), 
@ContactTitle nvarchar(30), 
@Address nvarchar(60), 
@City nvarchar(15), 
@Region nvarchar(15), 
@PostalCode nvarchar(10), 
@Country nvarchar(15), 
@Phone nvarchar(24), 
@Fax nvarchar(24)
AS
BEGIN

	SET NOCOUNT ON;

	UPDATE [dbo].[Customers]
	SET CompanyName = @CompanyName, 
		ContactName = @ContactName, 
		ContactTitle = @ContactTitle, 
		[Address] = @Address, 
		City = @City, 
		Region = @Region, 
		PostalCode = @PostalCode, 
		Country = @Country, 
		Phone = @Phone, 
		Fax = @Fax
	WHERE CustomerID = @CustomerID;
END
GO

CREATE PROCEDURE dbo.DeleteCustomers
@CustomerID nchar(5)
AS
BEGIN

	SET NOCOUNT ON;

	DELETE FROM [dbo].[Customers] WHERE CustomerID = @CustomerID;
END
GO

 

 

2. [서버 탐색기]를 펼쳐서 위에서 생성한 프로시저를 찾아서 오른쪽 윈도우창에 드래그&드랍 시킵니다.

  

 

3. [동작 구성] 설정창에서 stored procedure 이름을 선택해 줍니다. 

 

 

4. SQL Server Management Studio 을 열어서 프로파일러를 실행 합니다. 그리고 프로그램을 실행해서 insert, update, delete 를 실행하고, 다시 프로파일러에서 캡쳐한 부분을 확인해 보면 우리가 작성한 프로시저가 실행 된 것을 확인 할 수 있습니다.

 

화면 캡쳐는 insert 연산만 챕쳐 했습니다. 

 

 

전체 소스

MyLINQ9.zip

 

 

posted by 따시쿵
2015. 7. 6. 11:54 C# with LINQ to SQL

이번 장에서는 스토어드 프로시져를 호출하는 방법과 호출된 sql 문을 확인 해 보도록 하겠습니다.

 

1. 스토어드 프로시서를 생성합니다.

CREATE PROCEDURE dbo.GetCustomers
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;


	select CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax
	from [dbo].[Customers]
END
GO

 

2. [서버 탐색기]를 펼쳐서 위에서 생성한 프로시저를 찾아서 오른쪽 윈도우창에 드래그&드랍 시킵니다.

 

3. 프로그램 쿼리문을 스토어 프로시저를 호출하는 구문으로 변경합니다.

        #region Select ALL
        private void GetData()
        {
            northwindDataContext dbContext = new northwindDataContext();
            dataGridView1.DataSource = dbContext.GetCustomers();    // 스토어 프로시저 호출하는 구문
        }
        #endregion

 

 

4. [SQL Server Management Studio] 에서 [도구]창에서 [SQL Profiler]를 실행 한 후, 프로그램을 실행해서 생성된 sql 문을 확인 해 봅니다. 

 

 

5. 스토어드 프로시저가 프로그램에 포함되는 형태입니다.

 

실제로 프로시저가 northwind.designer.cs 파일에 아래와 같이 포함되어 있습니다.

		[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.GetCustomers")]
		public ISingleResult<Customers> GetCustomers()
		{
			IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
			return ((ISingleResult<Customers>)(result.ReturnValue));
		}

 

 

전체 소스

MyLINQ9.zip

 

posted by 따시쿵
2015. 7. 2. 17:55 C# with LINQ to SQL

이번 포스트에서는 LINQ to SQL 에서 생성 된 sql 문을 확인 해 보도록 하겠습니다.

 

windows form 타입을 기준으로 알아 보도록 하겠습니다.

1. dbContext.Log = Console.Out;

 

가장 간단하게는 다음과 같이 작업해 주시면 됩니다.

            northwindDataContext dbContext = new northwindDataContext();
            dbContext.Log = Console.Out;    // 출력창에 sql 문을 출력하는 명령문
            dataGridView1.DataSource = dbContext.Customers;

 

 

[Get Data] 버튼을 클릭시 출력창에 나오는 sql 문입니다.

 

만약 웹 페이지에서 작업을 한다면 위 구문을 다음으로 변경합니다.

dbContext.Log = Response.Out;

 

 

2. 문자열을 Trace.WriteLine 을 이용해서 출력창에 쿼리문을 보이는 방법

 

1번 쿼리와 데이타 쿼리 결과가 같으며 출력창에 보이는 쿼리도 같습니다.

            northwindDataContext dbContext = new northwindDataContext();

            var linqQuery = from customer in dbContext.Customers
                            select customer;
            string strQuery = linqQuery.ToString();

            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));  
            Trace.AutoFlush = true;
            Trace.WriteLine(strQuery);        // 출력창에 sql 문을 출력하는 명령문          

            dataGridView1.DataSource = linqQuery;

 

 

3. DataContext.GetCommand.CommandText 를 이용하는 방법

            northwindDataContext dbContext = new northwindDataContext();

            var linqQuery = from customer in dbContext.Customers
                            select customer;

            string strQuery = dbContext.GetCommand(linqQuery).CommandText;

            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out)); 
            Trace.AutoFlush = true;
            Trace.WriteLine(strQuery);      // 출력창에 sql 문을 출력하는 명령문

            dataGridView1.DataSource = linqQuery;

 

 

 

4. SQL Profiler를 이용하는 방법

 

위에서 설명한 방법들이 프로그램 파트에서 이루어진 부분이라면 지금은 디비 파트에서 실행되는 명령어를 프로파일러를 이용해서 캡쳐한 것입니다.

 

어떤 방법을 이용하든 생성된 sql 문은 동일합니다.

 

전체 소스

MyLINQ9.zip

 

posted by 따시쿵