チュートリアル: DataGrid コントロールで SQL Server データベースのデータを表示する
このチュートリアルでは、SQL Server データベースからデータを取得し、そのデータを DataGrid コントロールに表示します。 ADO.NET Entity Framework を使用して、データを表すエンティティ クラスを作成し、LINQ を使用して、指定されたデータをエンティティ クラスから取得するクエリを記述します。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
Visual Studio
AdventureWorks サンプル データベースが添付された、SQL Server または SQL Server Express の実行中のインスタンスへのアクセス権。 AdventureWorks データベースは GitHub からダウンロードできます。
エンティティ クラスを作成する
Visual Basic または C# で新しい WPF アプリケーション プロジェクトを作成し、
DataGridSQLExample
という名前を付けます。ソリューション エクスプローラーでプロジェクトを右クリックし、 [追加] をポイントし、 [新しい項目] を選択します。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[インストール済みのテンプレート] ペインで [データ] を選択し、テンプレート一覧で [ADO.NET Entity Data Model] を選択します。
ファイルに
AdventureWorksModel.edmx
と名前を付け、 [追加] をクリックします。Entity Data Model ウィザードが表示されます。
[モデルのコンテンツの選択] 画面で、 [データベースから EF Designer] をクリックし、 [次へ] をクリックします。
[データ接続の選択] 画面で、AdventureWorksLT2008 データベースへの接続を指定します。 詳細については、「[データ接続の選択] ダイアログ ボックス」を参照してください。
名前が
AdventureWorksLT2008Entities
であり、 [エンティティ接続設定に名前を付けて App.Config に保存] チェック ボックスがオンであることを確認してから、 [次へ] をクリックします。[データベース オブジェクトの選択] 画面で、[テーブル] ノードを展開し、Product および ProductCategory テーブルを選択します。
すべてのテーブルのエンティティ クラスを生成できます。ただし、この例では、これら 2 つのテーブルからのみデータを取得します。
[完了] をクリックします。
Entity Designer に Product および ProductCategory エンティティが表示されます。
データの取得と表示
MainWindow.xaml ファイルを開きます。
XAML エディターで、
<Grid>
タグと</Grid>
タグの間に次の DataGrid タグを追加して、dataGrid1
という名前の DataGrid を追加します。<DataGrid Name="dataGrid1" />
Windowを選択します。
プロパティ ウィンドウまたは 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>
Window の分離コード ファイル (MainWindow.xaml.vb または MainWindow.xaml.cs) を開きます。
次のコードを追加して、結合されたテーブルから特定の値のみを取得し、DataGrid の ItemsSource プロパティをクエリの結果に設定します。
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
例を実行します。
データを表示する DataGrid が表示されます。
関連項目
.NET Desktop feedback