다음을 통해 공유


가이드: 저장 프로시저만 사용하기 (비주얼 베이직)

이 연습에서는 저장 프로시저만 사용하여 데이터에 액세스하기 위한 기본 종합적인 LINQ to SQL 시나리오를 제공합니다. 이 방법은 데이터베이스 관리자가 데이터 저장소에 액세스하는 방법을 제한하는 데 자주 사용됩니다.

비고

LINQ to SQL 애플리케이션에서 저장 프로시저를 사용하여 기본 동작을 특히 Create, Update, 및 Delete 프로세스에 대해 재정의할 수도 있습니다. 자세한 내용은 삽입, 업데이트 및 삭제 작업 사용자 지정을 참조하세요.

이 연습에서는 Northwind 샘플 데이터베이스의 저장 프로시저에 매핑된 두 가지 메서드인 CustOrdersDetail 및 CustOrderHist를 사용합니다. 매핑은 SqlMetal 명령줄 도구를 실행하여 Visual Basic 파일을 생성할 때 발생합니다. 자세한 내용은 이 연습의 뒷부분에 있는 필수 구성 요소 섹션을 참조하세요.

이 연습에서는 개체 관계형 디자이너를 사용하지 않습니다. Visual Studio를 사용하는 개발자는 O/R 디자이너를 사용하여 저장 프로시저 기능을 구현할 수도 있습니다. Visual Studio의 LINQ to SQL 도구를 참조하세요.

비고

컴퓨터는 다음 지침에서 Visual Studio 사용자 인터페이스 요소 중 일부에 대해 다른 이름 또는 위치를 표시할 수 있습니다. 가지고 있는 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 IDE 개인 설정참조하세요.

이 안내는 Visual Basic 개발 설정을 사용하여 작성되었습니다.

필수 조건

이 과정을 수행하려면 다음이 필요합니다.

  • 이 연습에서는 전용 폴더("c:\linqtest3")를 사용하여 파일을 저장합니다. 연습을 시작하기 전에 이 폴더를 만듭니다.

  • Northwind 샘플 데이터베이스입니다.

    개발 컴퓨터에 이 데이터베이스가 없는 경우 Microsoft 다운로드 사이트에서 다운로드할 수 있습니다. 지침은 샘플 데이터베이스 다운로드를 참조하세요. 데이터베이스를 다운로드한 후 northwnd.mdf 파일을 c:\linqtest3 폴더에 복사합니다.

  • Northwind 데이터베이스에서 생성된 Visual Basic 코드 파일입니다.

    이 안내서는 다음 명령줄과 함께 SqlMetal 도구를 사용하여 작성되었습니다.

    sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize

    자세한 내용은 SqlMetal.exe(코드 생성 도구)를 참조하세요.

개요

이 연습은 다음 6가지 주요 작업으로 구성됩니다.

  • Visual Studio에서 LINQ to SQL 솔루션 설정

  • 프로젝트에 System.Data.Linq 어셈블리를 추가합니다.

  • 프로젝트에 데이터베이스 코드 파일을 추가합니다.

  • 데이터베이스에 대한 연결 만들기

  • 사용자 인터페이스 설정

  • 애플리케이션을 실행하고 테스트합니다.

LINQ to SQL 솔루션 만들기

이 첫 번째 작업에서는 LINQ to SQL 프로젝트를 빌드하고 실행하는 데 필요한 참조가 포함된 Visual Studio 솔루션을 만듭니다.

LINQ to SQL 솔루션을 만들려면

  1. Visual Studio 파일 메뉴에서 새 프로젝트를 클릭합니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식 창에서 Visual Basic을 확장한 다음 Windows를 클릭합니다.

  3. 템플릿 창에서 Windows Forms 애플리케이션을 클릭합니다.

  4. 이름 상자에 SprocOnlyApp을 입력합니다.

  5. OK를 클릭합니다.

    Windows Forms 디자이너가 열립니다.

LINQ to SQL 어셈블리 참조 추가

LINQ to SQL 어셈블리는 표준 Windows Forms 애플리케이션 템플릿에 포함되지 않습니다. 다음 단계에서 설명한 대로 어셈블리를 직접 추가해야 합니다.

System.Data.Linq.dll 추가하려면

  1. 솔루션 탐색기에서 모든 파일 표시를 클릭합니다.

  2. 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭한 다음, 참조 추가를 클릭합니다.

  3. 참조 추가 대화 상자에서 .NET을 클릭하고 System.Data.Linq 어셈블리를 클릭한 다음 확인을 클릭합니다.

    어셈블리가 프로젝트에 추가됩니다.

프로젝트에 Northwind 코드 파일 추가

이 단계에서는 SqlMetal 도구를 사용하여 Northwind 샘플 데이터베이스에서 코드 파일을 생성한 것으로 가정합니다. 자세한 내용은 이 연습의 앞부분에 있는 필수 구성 요소 섹션을 참조하세요.

프로젝트에 northwind 코드 파일을 추가하려면

  1. 프로젝트 메뉴에서 기존 항목 추가클릭합니다.

  2. 기존 항목 추가 대화 상자에서 c:\linqtest3\northwind.vb 이동한 다음 추가를 클릭합니다.

    northwind.vb 파일이 프로젝트에 추가됩니다.

데이터베이스 연결 만들기

이 단계에서는 Northwind 샘플 데이터베이스에 대한 연결을 정의합니다. 이 연습에서는 경로로 "c:\linqtest3\northwnd.mdf"를 사용합니다.

데이터베이스 연결을 만들려면

  1. 솔루션 탐색기에서 Form1.vb 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

    Class Form1 코드 편집기에서 나타납니다.

  2. 코드 블록에 Form1 다음 코드를 입력합니다.

    Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
    

사용자 인터페이스 설정

이 작업에서는 사용자가 저장 프로시저를 실행하여 데이터베이스의 데이터에 액세스할 수 있도록 인터페이스를 만듭니다. 이 연습을 사용하여 개발 중인 애플리케이션에서 사용자는 애플리케이션에 포함된 저장 프로시저를 사용해야만 데이터베이스의 데이터에 액세스할 수 있습니다.

사용자 인터페이스를 설정하려면

  1. Windows Forms 디자이너로 돌아갑니다(Form1.vb[디자인]).

  2. 보기 메뉴에서 도구 상자를 클릭합니다.

    도구 상자가 열립니다.

    비고

    이 섹션의 나머지 단계를 수행하는 동안 도구 상자를 열어 두려면 자동 숨기기 압정을 클릭합니다.

  3. 도구 상자에서 Form1로 단추 2개, 텍스트 상자 2개, 레이블 2개를 끕니다.

    함께 제공되는 그림과 같이 컨트롤을 정렬합니다. 컨트롤이 쉽게 맞도록 Form1 을 확장합니다.

  4. Label1을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  5. Text 속성을 Label1에서 Enter OrderID로 변경합니다.

  6. Label2와 동일한 방식으로 Text 속성을 Label2에서 Enter CustomerID:로 변경합니다.

  7. 같은 방법으로 Button1Text 속성을 주문 세부 정보로 변경합니다.

  8. Button2Text 속성을 주문 기록으로 변경합니다.

    모든 텍스트가 표시되도록 단추 컨트롤을 확장합니다.

단추 클릭을 처리하려면

  1. Form1에서 주문 세부 정보를 두 번 클릭하여 이벤트 처리기를 만들고 Button1 코드 편집기를 엽니다.

  2. 처리기에 다음 코드를 입력합니다 Button1 .

    ' Declare a variable to hold the contents of
    ' TextBox1 as an argument for the stored
    ' procedure.
    Dim parm As String = TextBox1.Text
    
    ' Declare a variable to hold the results returned
    ' by the stored procedure.
    Dim custQuery = db.CustOrdersDetail(parm)
    
    ' Clear the message box of previous results.
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    ' Execute the stored procedure and store the results.
    For Each custOrdersDetail As CustOrdersDetailResult In custQuery
        msg &= custOrdersDetail.ProductName & vbCrLf
    Next
    
    ' Display the results.
    If msg = "" Then
        msg = "No results."
    End If
    response = MsgBox(msg)
    
    ' Clear the variables before continuing.
    parm = ""
    TextBox1.Text = ""
    
  3. 이제 Form1에서 Button2 를 두 번 클릭하여 이벤트 처리기를 만들고 Button2 코드 편집기를 엽니다.

  4. 처리기에 다음 코드를 입력합니다 Button2 .

    ' Comments in the code for Button2 are the same
    ' as for Button1.
    Dim parm As String = TextBox2.Text
    
    Dim custQuery2 = db.CustOrderHist(parm)
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    For Each custOrdHist As CustOrderHistResult In custQuery2
        msg &= custOrdHist.ProductName & vbCrLf
    Next
    
    If msg = "" Then
        msg = "No results."
    End If
    
    response = MsgBox(msg)
    parm = ""
    TextBox2.Text = ""
    

애플리케이션 테스트

이제 애플리케이션을 테스트할 차례입니다. 데이터 저장소와의 접촉은 두 저장 프로시저가 수행할 수 있는 작업으로 제한됩니다. 이러한 작업은 입력한 orderID에 포함된 제품을 반환하거나 입력한 CustomerID에 대해 주문한 제품의 기록을 반환하는 것입니다.

애플리케이션을 테스트하려면

  1. F5 키를 눌러 디버깅을 시작합니다.

    Form1이 나타납니다.

  2. OrderID 입력 상자에 10249를 입력한 다음 주문 세부 정보를 클릭합니다.

    메시지 상자에는 10249 주문에 포함된 제품이 나열됩니다.

    확인을 클릭하여 메시지 상자를 닫습니다.

  3. CustomerID 입력 상자에 ALFKI을(를) 입력하고, 주문 기록을 클릭합니다.

    메시지 상자에는 고객 ALFKI의 주문 기록이 나열됩니다.

    확인을 클릭하여 메시지 상자를 닫습니다.

  4. OrderID 입력 상자에 입력123한 다음 주문 세부 정보를 클릭합니다.

    메시지 상자에 "결과 없음"이 표시됩니다.

    확인을 클릭하여 메시지 상자를 닫습니다.

  5. 디버그 메뉴에서 디버깅 중지를 클릭합니다.

    디버그 세션이 닫힙니다.

  6. 실험을 완료한 경우 파일 메뉴에서 프로젝트 닫기를 클릭하고 메시지가 표시되면 프로젝트를 저장할 수 있습니다.

다음 단계

몇 가지 변경을 수행하여 이 프로젝트를 향상시킬 수 있습니다. 예를 들어 사용 가능한 저장 프로시저를 목록 상자에 나열하고 사용자가 실행할 프로시저를 선택하도록 할 수 있습니다. 보고서의 출력을 텍스트 파일로 스트리밍할 수도 있습니다.

참고하십시오