2019-10-08に投稿

【VB.NET】Oracleに接続してデータを操作(追加・更新・削除)してみる

引き続きVB.NET。

プログラムは前回のものを参考にしてください。
【VB.NET】Oracleに接続してデータを検索してみる

プログラム修正

更新処理

    ''' <summary>
    ''' 更新ボタンクリックイベント
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click

        Using conn = New OracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")


            ' データベースオープン
            conn.Open()

            ' データ更新
            For i = 0 To dgvCat.Rows.Count - 1

                ' テーブルから対象のデータを取得
                Dim no As Integer = dgvCat(0, i).Value

                ' シーケンス列としていないので、
                ' 最初に件数を取得して No を計算する
                Dim cmd As OracleCommand = New OracleCommand("SELECT COUNT(*) FROM TBLCAT WHERE No = " + no, conn)
                Dim cnt As Decimal = cmd.ExecuteScalar()

                If (cnt = 0) Then

                    ' データ追加
                    Dim query = "INSERT INTO TBLCAT VALUES (" +
                        (cnt + 1) +
                        ", '" + dgvCat(1, i).Value + "'" +
                        ", '" + dgvCat(2, i).Value + "'" +
                        ",  " + dgvCat(3, i).Value + "'" +
                        ", '" + dgvCat(4, i).Value + "'" +
                        ", '" + dgvCat(5, i).Value + "')"

                    cmd = New OracleCommand(query, conn)
                    cmd.ExecuteNonQuery()

                Else

                    ' データ変更
                    Dim query = "UPDATE TBLCAT SET" +
                            "  NAME = '" + dgvCat(1, i).Value + "'" +
                            ", SEX = '" + dgvCat(2, i).Value + "'" +
                            ", AGE = " + dgvCat(3, i).Value +
                            ", KIND_CD = '" + dgvCat(4, i).Value + "'" +
                            ", FAVORITE = '" + dgvCat(5, i).Value + "' " +
                            "WHERE NO = " + dgvCat(0, i).Value

                    cmd = New OracleCommand(query, conn)
                    cmd.ExecuteNonQuery()

                End If

            Next


            conn.Close()
        End Using

        AddRowFlg = False

        ' データ再検索
        search()
        MessageBox.Show("データを更新しました。")

    End Sub

削除処理

    ''' <summary>
    ''' 削除ボタンクリックイベント
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click

        Using conn = New OracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")

            ' データベースオープン
            conn.Open()

            ' 選択されている行
            For Each r As DataGridViewRow In dgvCat.SelectedRows

                Dim Cat As Cat = CType(dgvCat.DataSource(), List(Of Cat)).Item(r.Index)

                ' データ削除
                Dim query As String = "DELETE FROM TBLCAT WHERE NO = " + Cat.No

                ' クエリ実行
                Dim cmd As OracleCommand = New OracleCommand(query, conn)
                cmd.ExecuteNonQuery()

            Next


            conn.Close()
        End Using

        ' データ再検索
        search()
        MessageBox.Show("データを削除しました。")

    End Sub

 

まとめ

起動後の画面は、SQLiteの時と変わらないので割愛しました。

次回以降は、一応他のDBもやっていこうかと思います。

ではでは。

Originally published at www.doraxdora.com
ツイッターでシェア
みんなに共有、忘れないようにメモ

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント