訪問して頂きありがとうございます。まさふくろーです。
この記事では、テーブルのレコードを更新する方法をご紹介します。
目次
テーブルのレコードを更新する
New OleDbCommand()
インスタンス化したOleDbCommand.CommandText = 実行するSQL文
インスタンス化したOleDbCommand.ExecuteNonQuery()
New SqlCommand() インスタンス化したSqlCommand.CommandText = 実行するSQL文 インスタンス化したSqlCommand.ExecuteNonQuery()
UPDATE テーブル名
SET 列名1 = 値1 [ , 列名2 = 値2]・・・)
WHERE 更新する行を特定する列名 = 値
サンプルプログラム

OleDbCommandクラスを使用する
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | Public Class Form1     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Try             Dim prov As String = "SQLOLEDB"             Dim serverName As String = "TEST-PC\SQLEXPRESS"             Dim dataBase As String = "AdventureWorksLT2017"             Dim userid As String = "test"             Dim pwd As String = "test"             Using conn As New OleDb.OleDbConnection()                 conn.ConnectionString =                     " Provider = " & prov &                     ";Data Source = " & serverName &                     ";Initial Catalog = " & dataBase &                     ";User ID = " & userid &                     ";Password =" & pwd                 conn.Open()                 Using cmd As New OleDb.OleDbCommand()                     cmd.Connection = conn                     cmd.CommandText =                         "UPDATE SalesLT.Product         " & ControlChars.NewLine &                         "SET                            " & ControlChars.NewLine &                         "       Name = ?                " & ControlChars.NewLine &                         "      ,ProductNumber = ?       " & ControlChars.NewLine &                         "      ,StandardCost = ?        " & ControlChars.NewLine &                         "      ,ListPrice = ?           " & ControlChars.NewLine &                         "      ,ModifiedDate = ?        " & ControlChars.NewLine &                         "WHERE                          " & ControlChars.NewLine &                         "       ProductID = ?           " & ControlChars.NewLine                     cmd.Parameters.Add("@Name", OleDb.OleDbType.VarChar, 50).Value = "test2"                     cmd.Parameters.Add("@ProductNumber", OleDb.OleDbType.VarChar, 25).Value = "def"                     cmd.Parameters.Add("@StandardCost", OleDb.OleDbType.Double).Value = 200                     cmd.Parameters.Add("@ListPrice", OleDb.OleDbType.Double).Value = 300                     cmd.Parameters.Add("@ModifiedDate", OleDb.OleDbType.Date).Value = Now                     cmd.Parameters.Add("@ProductID", OleDb.OleDbType.Integer).Value = 680                     cmd.ExecuteNonQuery()                 End Using                 Label1.Text = "Productテーブルのレコードを更新しました。"             End Using         Catch ex As Exception             Label1.Text = Err.Description         End Try     End Sub End Class | 
| 2 | 「テーブルのレコードを更新」ボタンクリック時に以下処理を行う。 | 
| 6~10 | 接続先データベースの情報を、変数に代入。 | 
| 12 | OleDbConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化) | 
| 14~19 | ConnectionStringプロパティにデータベース情報を設定。 | 
| 21 | データベースに接続。 | 
| 23 | OleDbCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化) | 
| 25 | SQL文を実行するために、14~19行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。 | 
| 27~36 | レコードを更新するSQL文をCommandTextプロパティに設定。 | 
| 30~36行目の「?」マークは、以下38~43行目で設定するパラメータを使用する際に記述します。 | |
| 38 | 「Product」テーブルの「Name」列に、値「test2」を設定する。 | 
| 39 | 「Product」テーブルの「ProductNumber」列に、値「def」を設定する。 | 
| 40 | 「Product」テーブルの「StandardCost」列に、値「200」を設定する。 | 
| 41 | 「Product」テーブルの「ListPrice」列に、値「300」を設定する。 | 
| 42 | 「Product」テーブルの「ModifiedDate」列に、値「現在日」を設定する。 | 
| 43 | 「Product」テーブルの「ProductID」列に、値「680」を設定する。 | 
| 45 | SQL文を実行する。 | 
| 49 | 処理が正常に終了したら、正常終了のメッセージをラベルに表示。 | 
| 53 | 処理の実行中にエラーが発生した場合、 | 
| 55 | エラー内容を取得し、ラベルに表示する。 | 
SqlCommandクラスを使用する
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | Public Class Form1     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Try             Dim serverName As String = "TEST-PC\SQLEXPRESS"             Dim dataBase As String = "AdventureWorksLT2017"             Dim userid As String = "test"             Dim pwd As String = "test"             Using conn As New SqlClient.SqlConnection()                 conn.ConnectionString =                     " Data Source = " & serverName &                     ";Initial Catalog = " & dataBase &                     ";User ID = " & userid &                     ";Password =" & pwd                 conn.Open()                 Using cmd As New SqlClient.SqlCommand()                     cmd.Connection = conn                     cmd.CommandText =                         "UPDATE SalesLT.Product                 " & ControlChars.NewLine &                         "SET                                    " & ControlChars.NewLine &                         "       Name = @Name                    " & ControlChars.NewLine &                         "      ,ProductNumber = @ProductNumber  " & ControlChars.NewLine &                         "      ,StandardCost = @StandardCost    " & ControlChars.NewLine &                         "      ,ListPrice = @ListPrice          " & ControlChars.NewLine &                         "      ,ModifiedDate = @ModifiedDate    " & ControlChars.NewLine &                         "WHERE                                  " & ControlChars.NewLine &                         "       ProductID = @ProductID          " & ControlChars.NewLine                     cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = "test2"                     cmd.Parameters.Add("@ProductNumber", SqlDbType.VarChar, 25).Value = "def"                     cmd.Parameters.Add("@StandardCost", SqlDbType.Money).Value = 200                     cmd.Parameters.Add("@ListPrice", SqlDbType.Money).Value = 300                     cmd.Parameters.Add("@ModifiedDate", SqlDbType.Date).Value = Now                     cmd.Parameters.Add("@ProductID", SqlDbType.Int).Value = 680                     cmd.ExecuteNonQuery()                 End Using                 Label1.Text = "Productテーブルのレコードを更新しました。"             End Using         Catch ex As Exception             Label1.Text = Err.Description         End Try     End Sub End Class | 
| 2 | 「テーブルのレコードを更新」ボタンクリック時に以下処理を行う。 | 
| 6~9 | 接続先データベースの情報を、変数に代入。 | 
| 11 | SqlConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化) | 
| 13~17 | ConnectionStringプロパティにデータベース情報を設定。 | 
| 19 | データベースに接続。 | 
| 21 | SqlCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化) | 
| 23 | SQL文を実行するために、13~17行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。 | 
| 25~34 | レコードを更新するSQL文をCommandTextプロパティに設定。 | 
| 28~34行目の「@」マークは、以下36~41行目で設定するパラメータを使用する際に記述します。 | |
| 36 | 「Product」テーブルの「Name」列に、値「test2」を設定する。 | 
| 37 | 「Product」テーブルの「ProductNumber」列に、値「def」を設定する。 | 
| 38 | 「Product」テーブルの「StandardCost」列に、値「200」を設定する。 | 
| 39 | 「Product」テーブルの「ListPrice」列に、値「300」を設定する。 | 
| 40 | 「Product」テーブルの「ModifiedDate」列に、値「現在日」を設定する。 | 
| 41 | 「Product」テーブルの「ProductID」列に、値「680」を設定する。 | 
| 43 | SQL文を実行する。 | 
| 47 | 処理が正常に終了したら、正常終了のメッセージをラベルに表示。 | 
| 51 | 処理の実行中にエラーが発生した場合、 | 
| 53 | エラー内容を取得し、ラベルに表示する。 | 
関連記事
テーブルにレコードを追加
テーブルのレコードを削除
トランザクション処理
データベースに接続
Usingステートメント
   【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する
  【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する
構造化例外処理
最後まで読んでいただき、ありがとうございました!
  







