【VB.NET】Oracleに接続してデータを検索してみる

2017年12月29日VB.NET,開発

おはようございます。

結局、またVB.NETですが。
WPFでもやりましたが Oracle に接続してとりあえずのことをやってみます。

プログラムは前回のもの、データベースの作成なんかはWPFを参考にしてください。

スポンサーリンク

参照の追加

参照の追加
参照の追加

ソリューション・エクスプローラーの「参照」を右クリックして「参照の追加」を選択します。

dll の追加
dll の追加

参照の追加画面が表示されるので、「参照」ボタンをクリックします。

dll の追加
dll の追加

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の予定です。

ではでは。

スポンサーリンク


関連するコンテンツ

2017年12月29日VB.NET,開発Oracle,VB.NET,サンプルプログラム

Posted by doradora