다음을 통해 공유


연습: 저장 프로시저 사용

SQL Server 데이터베이스의 저장 프로시저를 LightSwitch에서 직접 호출할 수는 없지만 LightSwitch 앱에서 저장 프로시저의 매개 변수를 포함하는 로컬 테이블을 만든 다음 서버 계층 이벤트에서 저장 프로시저를 호출할 수는 있습니다. 이 연습에서는 저장 프로시저를 사용하여 SQL 데이터베이스에 고객 레코드를 삽입하는 방법을 보여 줍니다.

대부분의 데이터베이스 관리자는 직접 테이블 액세스를 허용하지 않으며, 대신 읽기 전용 보기를 표시하고 레코드 삽입/업데이트/삭제를 위한 저장 프로시저를 제공합니다. LightSwitch는 저장 프로시저를 인식하지 못하므로 저장 프로시저를 사용하여 레코드를 업데이트하는 데이터베이스가 사용할 수 없는 것처럼 보일 수도 있습니다. 그러나 약간의 추가 작업을 수행하면 LightSwitch에서 이러한 데이터베이스를 사용할 수 있습니다.

사전 요구 사항

이 연습에서는 Northwind 샘플 데이터베이스를 사용합니다.

저장 프로시저 만들기

대부분의 경우에는 데이터베이스에 이미 있는 저장 프로시저에 액세스합니다. Northwind 데이터베이스에는 고객 레코드를 삽입하는 데 필요한 저장 프로시저가 없으므로 해당 저장 프로시저를 추가해야 합니다.

저장 프로시저를 추가하려면

  1. 메뉴 모음에서 보기, SQL Server 개체 탐색기를 차례로 선택합니다.

  2. SQL Server 개체 탐색기 창에서 NORTHWIND 데이터베이스 노드를 확장하고 프로그래밍 기능을 선택합니다.

  3. 프로그래밍 기능 노드를 확장하고 저장 프로시저를 선택합니다.

  4. 저장 프로시저의 바로 가기 메뉴를 열고 새 저장 프로시저 추가를 선택합니다.

  5. 코드 편집기의 내용을 다음 Transact-SQL 코드로 바꾸고 업데이트 단추를 선택합니다.

    CREATE Procedure [dbo].[InsertCustomer]
        @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
    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)
    
  6. 데이터베이스 업데이트 미리 보기 대화 상자에서 데이터베이스 업데이트 단추를 선택합니다.

    InsertCustomer 저장 프로시저가 데이터베이스에 추가됩니다.

LightSwitch 응용 프로그램 만들기

이 단계에서는 저장 프로시저를 호출하고 Northwind 데이터베이스에 새 고객을 추가하는 앱을 만듭니다.

앱을 만들려면

  1. 메뉴 모음에서 파일, 새로 만들기, 프로젝트를 차례로 선택합니다.

  2. 새 프로젝트 대화 상자에서 Visual Basic 또는 Visual C# 노드를 확장한 다음 LightSwitch HTML 응용 프로그램 템플릿을 선택합니다.

  3. 이름 텍스트 상자에 NorthwindSP를 입력한 후 확인 단추를 선택합니다.

데이터 소스를 추가하려면

  1. 솔루션 탐색기에서 데이터 소스 노드의 바로 가기 메뉴를 열고 데이터 소스 추가를 선택합니다.

  2. 데이터 소스 연결 마법사에서 데이터베이스를 선택한 후 다음 단추를 선택합니다.

  3. 연결 속성 대화 상자에서 Northwind 데이터베이스의 연결 정보를 입력하고 확인 단추를 선택합니다.

  4. 데이터베이스 개체 선택 페이지에서 테이블 노드를 확장하고 Customers 확인란을 선택한 다음 마침 단추를 선택합니다.

로컬 테이블을 추가하려면

  1. 솔루션 탐색기에서 데이터 소스 노드의 바로 가기 메뉴를 열고 테이블 추가를 선택합니다.

  2. 속성 창에서 이름 속성을 선택하고 NewCustomer를 입력합니다.

  3. 엔터티 디자이너에서 다음 필드를 추가합니다.

    이름

    형식

    필수

    CustomerID

    문자열

    CompanyName

    문자열

    ContactName

    문자열

    ContactTitle

    문자열

    Address

    문자열

    City

    문자열

    Region

    문자열

    PostalCode

    문자열

    Country

    문자열

    전화

    전화 번호

    Fax

    전화 번호

    모든 필드는 필수 필드입니다. 저장 프로시저의 모든 매개 변수에는 값이 필요하기 때문입니다. 또한 PhoneFax 필드는 데이터 형식은 Phone Number입니다. 이러한 필드는 데이터베이스에 nvarchar로 저장되지만 클라이언트 계층에서 LightSwitch 사용자 지정 비즈니스 종류를 사용할 수 있습니다.

화면을 추가하려면

  1. 엔터티 디자이너의 원근감 모음에서 HTMLClient를 선택합니다.

  2. 도구 모음에서 화면 단추를 선택합니다.

  3. 새 화면 추가 대화 상자에서 공통 화면 세트 템플릿을 선택하고 화면 세트 이름 텍스트 상자에 Customers를 입력한 다음 화면 데이터 목록에서 NewCustomer를 선택하고 확인 단추를 선택합니다.

저장 프로시저를 호출하려면

  1. 솔루션 탐색기에서 NorthwindSP.Server 노드의 바로 가기 메뉴를 열고 추가, 참조를 차례로 선택합니다.

  2. 참조 추가 대화 상자에서 System.Configuration 확인란을 선택하고 확인 단추를 선택합니다.

  3. 솔루션 탐색기에서 NewCustomer.lsml 노드의 바로 가기 메뉴를 열고 열기를 선택합니다.

  4. 엔터티 디자이너의 원근감 모음에서 서버를 선택합니다.

  5. 도구 모음에서 코드 작성 목록을 확장하고 NewCustomers_Inserting을 선택합니다.

  6. 코드 편집기에서 기존 코드를 다음 코드로 바꿉니다.

    Imports System.Configuration
    Imports System.Data
    Imports System.Data.SqlClient
    Namespace LightSwitchApplication
    
        Public Class ApplicationDataService
    
            Private Sub NewCustomers_Inserting(entity As NewCustomer)
                Using connection = New SqlConnection
                    Dim connectionStringName = Me.DataWorkspace.NorthwindData.Details.Name
                    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString
    
                    Dim procedure = "dbo.InsertCustomer"
                    Using command = New SqlCommand(procedure, connection)
                        command.CommandType = CommandType.StoredProcedure
    
                        command.Parameters.Add(
                            New SqlParameter("@CustomerID", entity.CustomerID))
                        command.Parameters.Add(
                            New SqlParameter("@CompanyName", entity.CompanyName))
                        command.Parameters.Add(
                            New SqlParameter("@ContactName", entity.ContactName))
                        command.Parameters.Add(
                            New SqlParameter("@ContactTitle", entity.ContactTitle))
                        command.Parameters.Add(
                            New SqlParameter("@Address", entity.Address))
                        command.Parameters.Add(
                            New SqlParameter("@City", entity.City))
                        command.Parameters.Add(
                            New SqlParameter("@Region", entity.Region))
                        command.Parameters.Add(
                            New SqlParameter("@PostalCode", entity.PostalCode))
                        command.Parameters.Add(
                            New SqlParameter("@Country", entity.Country))
                        command.Parameters.Add(
                            New SqlParameter("@Phone", entity.Phone))
                        command.Parameters.Add(
                            New SqlParameter("@Fax", entity.Fax))
    
                        connection.Open()
                        command.ExecuteNonQuery()
                    End Using
    
    
                End Using
            End Sub
        End Class
    
    End Namespace
    
    using Microsoft.VisualBasic;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using System.Configuration;
    using System.Data.SqlClient;
    namespace LightSwitchApplication
    {
    
    public class ApplicationDataService
    {
    
    private void NewCustomers_Inserting(NewCustomer entity)
    {
    using (connection == new SqlConnection()) {
    dynamic connectionStringName = this.DataWorkspace.NorthwindData.Details.Name;
    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString;
    
    dynamic procedure = "dbo.InsertCustomer";
    using (command == new SqlCommand(procedure, connection)) {
    command.CommandType = CommandType.StoredProcedure;
    
    command.Parameters.Add(new SqlParameter("@CustomerID", entity.CustomerID));
    command.Parameters.Add(new SqlParameter("@CompanyName", entity.CompanyName));
    command.Parameters.Add(new SqlParameter("@ContactName", entity.ContactName));
    command.Parameters.Add(new SqlParameter("@ContactTitle", entity.ContactTitle));
    command.Parameters.Add(new SqlParameter("@Address", entity.Address));
    command.Parameters.Add(new SqlParameter("@City", entity.City));
    command.Parameters.Add(new SqlParameter("@Region", entity.Region));
    command.Parameters.Add(new SqlParameter("@PostalCode", entity.PostalCode));
    command.Parameters.Add(new SqlParameter("@Country", entity.Country));
    command.Parameters.Add(new SqlParameter("@Phone", entity.Phone));
    command.Parameters.Add(new SqlParameter("@Fax", entity.Fax));
    
    connection.Open();
    command.ExecuteNonQuery();
    }
    
    
    }
    }
    }
    
    }
    

    NewCustomers 테이블에 새 레코드를 삽입하면 이 코드가 실행되어 Northwind 데이터베이스에 대한 연결을 열고 InsertCustomer 저장 프로시저를 실행합니다. 또한 NewCustomer 엔터티의 값을 저장 프로시저에 대한 매개 변수로 제공합니다.

앱을 테스트하려면

  1. 코드 편집기에서 NewCustomers_Inserting 메서드에 중단점을 설정합니다.

  2. 앱을 실행하고 CustomersSet 화면에서 추가 단추를 선택합니다.

  3. Customers 화면에서 모든 필드에 내용을 입력하고 저장 단추를 선택합니다.

    중단점이 적중하여 코드가 작동함을 보여 줍니다. F5 키를 눌러 계속 진행합니다. Northwind 데이터베이스의 Customers 테이블을 열면 새 고객 레코드가 표시됩니다.

다음 단계

저장 프로시저를 사용하면 LightSwitch 화면과 비즈니스 논리를 일반적인 방법으로 만들 수 있으며 작동하는 응용 프로그램을 빠르고 쉽게 만들 수 있습니다.

참고 항목

작업

방법: LightSwitch에서 저장 프로시저 실행

기타 리소스

데이터: 응용 프로그램 뒤의 정보