(1) 「Microsoft Visual Studio Express 2012 for Windows Desktop」を開き、新規で「Windowsフォームアプリケーション」を開く
(2) Form1に適当にDataGridViewをいれておく。
(3) Form1.vbに以下のコードを追記
Public Class Form1
Public Sub New()
' この呼び出しはデザイナーで必要です。 InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。 Construct() End Sub
Private Sub Construct() ' テーブル定義 Dim dtMain As New DataTable dtMain.Columns.Add(New DataColumn With {.DataType = System.Type.GetType("System.Int32"), .ColumnName = "ID"}) dtMain.Columns.Add(New DataColumn With {.DataType = System.Type.GetType("System.String"), .ColumnName = "NAME"})
Dim dtSub1 As DataTable = dtMain.Clone Dim dtSub2 As DataTable = dtMain.Clone Dim dtKekka As DataTable = dtMain.Clone Dim dtRow As DataRow = Nothing
' データインサート For i As Integer = 1 To 3 dtRow = dtMain.NewRow dtRow("ID") = i dtMain.Rows.Add(dtRow) If i = 1 Then dtRow("NAME") = "外結DT1" dtSub1.ImportRow(dtRow) ElseIf i = 3 Then dtRow("NAME") = "外結DT2" dtSub2.ImportRow(dtRow) End If Next
' 外結クエリ① Dim query = From main In dtMain.AsEnumerable _ From sub1 In dtSub1.AsEnumerable.Where(Function(m) m.Field(Of Integer)("ID") = main.Field(Of Integer)("ID")).DefaultIfEmpty() _ From sub2 In dtSub2.AsEnumerable.Where(Function(m) m.Field(Of Integer)("ID") = main.Field(Of Integer)("ID")).DefaultIfEmpty() _ Select New With _ { _ .id = main!ID, _ .name = If(sub1 Is Nothing, If(sub2 Is Nothing, main!NAME, sub2!NAME), sub1!NAME) _ } For Each row In query dtRow = dtKekka.NewRow dtRow("ID") = row.id dtRow("NAME") = row.name dtKekka.Rows.Add(dtRow) Next Me.DataGridView1.DataSource = dtKekka
(1) Visual Studio Express 2012 for Windows Desktopを開いて、新規でwindowsフォームアプリケーションを作成。 (2) メニューバーから「ツール」→「ライブラリ パッケージ マネージャ」→「ソリューションのNuGetパッケージの管理」を開く。 (3) オンラインで「MySql」を検索して「MySql.Data」ドライバをインストールする。 (4) フォーム(Form1.vb)にDataGridViewを貼り付ける(コントロール名:DataGridView1)。
(5) フォーム(Form1.vb)のコードを表示して以下を追記。
Imports MySql.Data.MySqlClient Public Class Form1 Public Sub New() ' この呼び出しはデザイナーで必要です。 InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。 Construct() End Sub
Private Sub Construct() Dim ds As New DataSet
' sampleデータ取得 Using cmd As New MySqlCommand Try cmd.CommandType = CommandType.StoredProcedure ' ② cmd.CommandText = "stored_sample" cmd.Connection = New MySqlConnection("Database=sampledb;Data Source=localhost;User Id=vb;Password=vb") cmd.Parameters.Add("set_user_id", MySqlDbType.Int32).Value = 2 ' ③ user_id=2を抽出
Using da As New MySqlDataAdapter da.SelectCommand = cmd da.Fill(ds, "sample") End Using Catch ex As MySqlException Throw ex End Try End Using
DataGridView1.DataSource = ds.Tables("sample") End Sub End Class