またVB.NETですが。
WPFでもやりましたが Oracle に接続してとりあえずのことをやってみます。
プログラムは前回のもの、データベースの作成なんかはWPFを参考にしてください。
【WPF】Oracleを使ってデータを DataGrid に表示する
ソリューション・エクスプローラーの「参照」を右クリックして「参照の追加」を選択します。
参照の追加画面が表示されるので、「参照」ボタンをクリックします。
Oracle.DataAcess.dllを選択し、「追加」ボタンをクリックして完了です。
下記の記述を追加します。
Imports System.Data
Imports System.Data.OracleClient
''' <summary>
''' フォームロード時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using conn As New OracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")
' データベースオープン
conn.Open()
' 種別コンボボックスの内容をデータベースから取得して設定
' データを取得
Dim cmd As OracleCommand = New OracleCommand("SELECT * FROM MSTKIND", conn)
Dim da As OracleDataAdapter = New OracleDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
' コンボボックスに値を設定
Dim sources As List(Of Kind) = New List(Of Kind)
Dim k As Kind = New Kind()
k.KindCd = ""
k.KindName = "指定なし"
sources.Add(k)
For Each row As DataRow In dt.Rows
k = New Kind()
k.KindCd = row("KIND_CD").ToString()
k.KindName = row("KIND_NAME").ToString()
sources.Add(k)
Next
Me.cmbKind.DataSource = sources
Me.cmbKind.DisplayMember = "KindName"
' データベースクローズ
conn.Close()
End Using
End Sub
''' <summary>
''' 検索処理
''' </summary>
Private Sub search()
Using conn As New OracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")
' データベースオープン
conn.Open()
' 検索条件を指定してデータを取得
Using con As New DataContext(conn)
Dim searchName As String = txtName.Text
Dim searchKind As String = CType(cmbKind.SelectedValue, Kind).KindCd
' 種別マスタ取得
' 種別コンボボックスの内容をデータベースから取得して設定
' データを取得
Dim cmd As OracleCommand = New OracleCommand("SELECT * FROM MSTKIND", conn)
Dim da As OracleDataAdapter = New OracleDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
Dim kindList As List(Of Kind) = New List(Of Kind)
Dim k As Kind = New Kind()
For Each row As DataRow In dt.Rows
k = New Kind()
k.KindCd = row("KIND_CD").ToString()
k.KindName = row("KIND_NAME").ToString()
kindList.Add(k)
Next
' 猫一覧取得
Dim Sql As String = "SELECT * FROM TBLCAT"
Dim where As String = ""
If (searchName <> "") Then
where = " WHERE NAME LIKE '" + searchName + "%'"
End If
If (searchKind <> "") Then
If (where <> "") Then
where += " AND"
Else
where = " WHERE"
End If
where += " KIND_CD = '" + searchKind + "'"
End If
Sql += where
cmd = New OracleCommand(Sql, conn)
da = New OracleDataAdapter(cmd)
dt = New DataTable()
da.Fill(dt)
' データグリッドビューに設定
Dim i As Integer = 0
dgvCat.Rows.Clear()
For i = 0 To dt.Rows.Count() - 1
' 行追加
dgvCat.Rows.Add()
' No(プライマリなので編集不可)
Dim no = New DataGridViewTextBoxCell()
no.Value = dt.Rows(i)("No")
dgvCat(0, i) = no
dgvCat(0, i).ReadOnly = True
' 名前
Dim name = New DataGridViewTextBoxCell()
name.Value = dt.Rows(i)("Name")
dgvCat(1, i) = name
' 性別
Dim sex = New DataGridViewComboBoxCell()
sex.Items.AddRange({"♂", "♀"})
sex.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
dgvCat(2, i) = sex
dgvCat(2, i).Value = dt.Rows(i)("Sex")
' 年齢
Dim age = New DataGridViewTextBoxCell()
age.Value = dt.Rows(i)("Age")
dgvCat(3, i) = age
' 種別
Dim kind = New DataGridViewComboBoxCell()
kind.DataSource = kindList
kind.DisplayMember = "KindName"
kind.ValueMember = "KindCd"
kind.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
dgvCat(4, i) = kind
dgvCat(4, i).Value = dt.Rows(i)("Kind_Cd")
' 好物
Dim favorite = New DataGridViewTextBoxCell()
favorite.Value = dt.Rows(i)("Favorite")
dgvCat(5, i) = favorite
Next
End Using
' データベースクローズ
conn.Close()
End Using
End Sub
ちょっと画面は取り忘れましたが、これでOracleからデータ取得、表示ができます。
次回もOracleの予定です。
ではでは。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント