Share via


연습: DataGrid 컨트롤에서 SQL Server 데이터베이스의 데이터 표시

이 연습에서는 SQL Server 데이터베이스에서 데이터를 검색하고 DataGrid 컨트롤에서 해당 데이터를 표시합니다. ADO.NET Entity Framework를 사용하여 데이터를 나타내는 엔터티 클래스를 만들고 LINQ를 사용하여 엔터티 클래스에서 지정된 데이터를 검색하는 쿼리를 작성합니다.

필수 구성 요소

이 연습을 완료하려면 다음과 같은 구성 요소가 필요합니다.

  • Visual Studio.

  • AdventureWorks 샘플 데이터베이스가 연결된 SQL Server 또는 SQL Server Express의 실행 중인 인스턴스 액세스 권한. GitHub에서 AdventureWorks 데이터베이스를 다운로드할 수 있습니다.

엔터티 클래스를 만들기

  1. Visual Basic 또는 C#에서 DataGridSQLExample이라는 새 WPF 애플리케이션 프로젝트를 만듭니다.

  2. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음, 새 항목을 선택합니다.

    새 항목 추가 대화 상자가 나타납니다.

  3. 설치된 템플릿 창에서 데이터를 선택하고 템플릿 목록에서 ADO.NET 엔터티 데이터 모델을 선택합니다.

    ADO.NET 엔터티 데이터 모델 항목 템플릿

  4. 파일 이름을 AdventureWorksModel.edmx로 지정하고 추가를 클릭합니다.

    엔터티 데이터 모델 마법사가 나타납니다.

  5. 모델 콘텐츠 선택 화면에서 데이터베이스의 EF 디자이너를 선택하고 다음을 클릭합니다.

  6. 데이터 연결 선택 화면에서 AdventureWorksLT2008 데이터베이스에 대한 연결을 제공합니다. 자세한 내용은 데이터 연결 선택 대화 상자를 참조하세요.

    이름이 AdventureWorksLT2008Entities이고 다른 이름으로 App.Config의 엔터티 연결 설정 저장 확인란이 선택되어 있는지 확인한 다음, 다음을 클릭합니다.

  7. 데이터베이스 개체 선택 화면에서 테이블 노드를 확장하고 ProductProductCategory 테이블을 선택합니다.

    모든 테이블에 대해 엔터티 클래스를 생성할 수 있습니다. 그러나 이 예제에서는 이 두 테이블에서만 데이터를 검색합니다.

    테이블에서 Product 및 ProductCategory 선택

  8. Finish를 클릭합니다.

    Product 및 ProductCategory 엔터티는 Entity Designer에 표시됩니다.

    Product 및 ProductCategory 엔터티 모델

데이터 검색 및 표시

  1. MainWindow.xaml 파일을 엽니다.

  2. WindowWidth 속성을 450으로 설정합니다.

  3. XAML 편집기에서 <Grid></Grid> 태그 사이에 다음 DataGrid 태그를 추가하여 dataGrid1이라는 DataGrid를 추가합니다.

    <DataGrid Name="dataGrid1" />
    

    DataGrid가 있는 창

  4. Window를 선택합니다.

  5. 속성 창 또는 XAML 편집기를 사용하여 Loaded 이벤트에 대해 Window_Loaded라는 Window에 대한 이벤트 처리기를 만듭니다. 자세한 내용은 방법: 단순한 이벤트 처리기 만들기를 참조하세요.

    다음은 MainWindow.xaml에 대한 XAML을 보여 줍니다.

    참고

    Visual Basic을 사용하는 경우 MainWindow.xaml의 첫 번째 줄에서 x:Class="DataGridSQLExample.MainWindow"x:Class="MainWindow"로 바꿉니다.

    <Window x:Class="DataGridSQLExample.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="450" 
            Loaded="Window_Loaded">
        <Grid>
            <DataGrid Name="dataGrid1" />
        </Grid>
    </Window>
    
  6. Window에 대한 코드 숨김 파일(MainWindow.xaml.vb 또는 MainWindow.xaml.cs)을 엽니다.

  7. 다음 코드를 추가하여 조인된 테이블에서 특정 값만 검색하고 DataGridItemsSource 속성을 쿼리의 결과로 설정합니다.

    using System.Data.Entity.Core.Objects;
    using System.Linq;
    using System.Windows;
    
    namespace DataGridSQLExample
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            AdventureWorksLT2008Entities dataEntities = new AdventureWorksLT2008Entities();
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                var query =
                from product in dataEntities.Products
                where product.Color == "Red"
                orderby product.ListPrice
                select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice };
    
                dataGrid1.ItemsSource = query.ToList();
            }
        }
    }
    
    Imports System.Data.Objects
    
    Class MainWindow
        Dim dataEntities As AdventureWorksLT2008Entities = New AdventureWorksLT2008Entities
    
        Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
            Dim products As ObjectQuery(Of Product) = dataEntities.Products
    
            Dim query = _
                From product In products _
                Where product.Color = "Red" _
                Order By product.ListPrice _
                Select product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice
    
            dataGrid1.ItemsSource = query.ToList()
        End Sub
    End Class
    
  8. 예제를 실행합니다.

    데이터를 표시하는 DataGrid가 표시됩니다.

    SQL 데이터베이스의 데이터가 있는 DataGrid

참고 항목