DataGrid SQLサーバのデータを表示する WPF
DataGrid SQLサーバのデータを表示する WPF
データグリッドに、SQLサーバのデータを表示してみる。
データは、いつもの郵便局データ。
122585行を取得、表示するのに2秒程度なので、非常に速い。
赤枠の所をクリックすると、ソート機能も標準でついている。
デフォルトで、至れり尽くせりのグリッドになってる。
MSDNのDataGridのページ。
非常に面白いことができそうなので、次回はMSのチュートリアルを自分でやってみよう!
Imports System.Data
Imports System.Data.SqlClient
Public Class Window1
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
'SQLサーバからKEN_ALLを検索取得
Dim DA As New SqlDataAdapter
Dim cnn As New SqlConnection
Dim cmnd As New SqlCommand
Dim ds As DataSet = New DataSet
Try
'すべてのテーブル内のすべての行を削除して、データの DataSet を消去します。
ds.Clear()
'コネクションストリングを設定
cnn.ConnectionString = "user id=vbuser;password=sa;initial catalog=MYTEST;data source=(local);Connect Timeout=5"
'cnn.ConnectionString = "user id=vbuser;password=sa;initial catalog=MYTEST;data source=PC名\SQLEXPRESS;Connect Timeout=5"
'この接続は明示的にオープンクローズする必要がない。Fillでオープンクローズを勝手にしてくれる
Dim i As New System.Diagnostics.Stopwatch()
i.Start()
'SQL文を設定し、コマンドにコネクションを設定する
Dim MySQL As String
'わざと並びを変えて
MySQL = "SELECT * FROM KEN_ALL ORDER BY 県"
cmnd.CommandText = MySQL
cmnd.Connection = cnn
'データアダプターにコマンドを設定
DA.SelectCommand = cmnd
'レコード数の取得
Dim reCount As Integer
'データセットにデータの実態を取得する()
reCount = DA.Fill(ds, "KEN_ALL")
'MessageBox.Show(reCount)
Dim tbv As New DataView
tbv.Table = ds.Tables("KEN_ALL")
Me.DataGrid1.ItemsSource = tbv
i.Stop()
Debug.Print(i.ElapsedMilliseconds.ToString)
Catch ex As Exception
MessageBox.Show(ex.Message, "SQL検索", MessageBoxButton.OK, MessageBoxImage.Error)
End Try
End Sub
End Class
|
XAMLはただコントロールを貼り付けただけなので、何も特殊な事はしていない。
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" WindowStartupLocation="CenterScreen">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Button Content="データ取得" Name="Button1" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="50"></Button>
<DataGrid Grid.Row="1" Name="DataGrid1">
</DataGrid>
</Grid>
</Window>
|