バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第16号】
第16号(2004.10.18発行) ====================================================================== ★★ VB.NETデータベースプログラミング奮闘記 ★★ ---------------------------------------------------------------------- ADO.NETの基本的なプログラミングを中心に掲載します。 末永くご購読の程よろしくお願い申し上げます。 すぐ使えるADO.NET --> サンプルプログラム満載 http://park5.wakwak.com/‾weblab/ ====================================================================== -----【目次】----- 1. VB.NETワンポイント:TypeOf … Is演算子 2. ADO.NET:Excelファイルの追加処理と更新処理 ---------------------------------------------------------------------- ■■ VB.NETワンポイント:TypeOf … Is演算子 ■■ 今回は、TypeOf … Is演算子を紹介します。この演算子は、オブジェクトが 特定の型、または特定の型を継承している場合には、Trueを返し、そうでなけ れば、Falseを返します。 TextBoxクラスは、System.Objectを基底クラスとして、次のように派生してい ます。 System.Object └―System.MarshalByRefObject └―System.ComponentModel.Component └―System.Windows.Forms.Control └―System.Windows.Forms.TextBoxBase └―System.Windows.Forms.TextBox したがって、次の例では、TypeOf … Is演算子は、すべてTrueを返し、 メッセージボックスが3度表示されます。 Dim TextBox1 As New TextBox() If TypeOf TextBox1 Is Object Then MessageBox.Show("TextBox1はObject型から派生しています") End If If TypeOf TextBox1 Is Control Then MessageBox.Show("TextBox1はControl型から派生しています") End If If TypeOf TextBox1 Is TextBox Then MessageBox.Show("TextBox1はTextBox型です") End If ---------------------------------------------------------------------- ■■ ADO.NET:Excelファイルの追加処理と更新処理 ■■ 前号と同じ下記Excelシート(シート名は、デフォルトの"Sheet1")を使い、 行の追加、更新を行う方法を紹介します。 A B C D ---------------------------------------------------------------- 1 郵便番号 都道府県名 市区町村名 町域名 2 100-0102 東京都 大島大島町 岡田 3 100-0211 東京都 大島大島町 差木地 4 100-0103 東京都 大島大島町 泉津 : n 104-0061 東京都 中央区 銀座 : なお、Jet OLE DBプロバイダでは、行削除はできません。DELETE操作を実行す ると、例外が発生します。削除の仕方については、次号で論理的な削除方法を 紹介します。 接続文字列は、前号で説明したExcelシートの読み込みとまったく同じです。 1行追加で使用するSQL文は、次のようになります。 "INSERT INTO [Sheet1$](郵便番号, 都道府県名, 市区町村名, 町域名) " + _ "VALUES(@yubinBango, @todofuken, @shikuchoson, @choiki)" テーブル名には、[Sheet1$]のように、シート名の後にドル記号を付加して指 定します。パラメータの@yubinBango、@todofuken、@shikuchoson、@choikiに は、追加するフィールド値をセットします。そのために、SQL文の出現順に、 コマンドオブジェクトのParametersコレクションに、パラメータを追加します。 そして、そのValueプロパティにフィールド値を設定します。 oCommand.Parameters.Add( _ New OleDbParameter("@yubinBango", OleDbType.Char, 8)) oCommand.Parameters("@yubinBango").Value = "999-9999" ........(中略)........ oCommand.Parameters.Add( _ New OleDbParameter("@choiki", OleDbType.Char, 50)) oCommand.Parameters("@choiki").Value = "エクセル町" レコードを追加処理は、コマンドオブジェクトのExecuteNonQueryメソッドを 呼び出して行います。メソッドの戻り値は、追加したレコード数です。 Dim count As Integer = oCommand.ExecuteNonQuery() 更新処理も、追加処理と同様です。 更新で使用するSQL文は、次のようになります。 "UPDATE [Sheet1$] SET 市区町村名=@shikuchoson, 町域名=@choiki " + _ "WHERE 郵便番号=@yubinBango" @shikuchoson、@choikiに、更新するフィールド値を、@yubinBangoに更新行の 郵便番号をセットして、ExecuteNonQueryメソッドで、更新処理を行います。 それでは、ソースリストを掲載します。 --【プログラムソースリスト】------------------------------------------ '---------- Excelシートに1行追加する ---------- '注:郵便番号の重複チェックはしていません Private Sub addRow() Dim oConn As New OleDbConnection() Dim oCommand As New OleDbCommand() Dim oDataAdapter As New OleDbDataAdapter() Dim oDataSet As DataSet = New DataSet() Dim yubinBangoList As New DataTable() Try 'DB接続文字列の設定 'プロジェクトファイルホルダの下のbinホルダにExcelファイルを置く oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " + _ "Data Source=" + Application.StartupPath + "¥郵便番号簿.xls;" + _ "Extended Properties=""Excel 8.0;HDR=YES;""" 'コネクションの設定 oCommand.Connection = oConn 'SQL文の設定 '注:シート名は、デフォルトの"Sheet1"のまま使っています oCommand.CommandText = "INSERT INTO [Sheet1$]" + _ "(郵便番号, 都道府県名, 市区町村名, 町域名) " + _ "VALUES(@yubinBango, @todofuken, @shikuchoson, @choiki)" 'DB接続を開く oConn.Open() 'INSERTコマンドの設定 oDataAdapter.InsertCommand = oCommand 'SQL文パラメータの設定(SQL文の出現順に設定) oCommand.Parameters.Add( _ New OleDbParameter("@yubinBango", OleDbType.Char, 8)) oCommand.Parameters("@yubinBango").Value = "999-9999" oCommand.Parameters.Add( _ New OleDbParameter("@todofuken", OleDbType.Char, 8)) oCommand.Parameters("@todofuken").Value = "追加県" oCommand.Parameters.Add( _ New OleDbParameter("@shikuchoson", OleDbType.Char, 50)) oCommand.Parameters("@shikuchoson").Value = "テスト市" oCommand.Parameters.Add( _ New OleDbParameter("@choiki", OleDbType.Char, 50)) oCommand.Parameters("@choiki").Value = "エクセル町" 'Excelブック挿入処理実行 Dim count As Integer = oCommand.ExecuteNonQuery() '追加レコード数のチェック If count <> 1 Then MessageBox.Show("追加処理が失敗しました", "エラー") End If Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.ToString, "例外発生") Finally 'DB接続を閉じる If Not oConn Is Nothing Then oConn.Close() End If End Try End Sub '---------- Excelシートの1行を更新する ---------- Private Sub updateRow() Dim oConn As New OleDbConnection() Dim oCommand As New OleDbCommand() Dim oDataAdapter As New OleDbDataAdapter() Dim oDataSet As DataSet = New DataSet() Dim yubinBangoList As New DataTable() Try 'DB接続文字列の設定 'プロジェクトファイルホルダの下のbinホルダにExcelファイルを置く oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " + _ "Data Source=" + Application.StartupPath + "¥郵便番号簿.xls;" + _ "Extended Properties=""Excel 8.0;HDR=YES;""" 'コネクションの設定 oCommand.Connection = oConn 'SQL文の設定 oCommand.CommandText = "UPDATE [Sheet1$] " + _ "SET 市区町村名=@shikuchoson, 町域名=@choiki " + _ "WHERE 郵便番号=@yubinBango" 'DB接続を開く oConn.Open() 'UPDATEコマンドの設定 oDataAdapter.UpdateCommand = oCommand 'SQL文パラメータの設定(SQL文の出現順に設定) oCommand.Parameters.Add( _ New OleDbParameter("@shikuchoson", OleDbType.Char, 50)) oCommand.Parameters("@shikuchoson").Value = "@@@市" oCommand.Parameters.Add( _ New OleDbParameter("@choiki", OleDbType.Char, 50)) oCommand.Parameters("@choiki").Value = "###" oCommand.Parameters.Add( _ New OleDbParameter("@yubinBango", OleDbType.Char, 8)) oCommand.Parameters("@yubinBango").Value = "999-9999" 'Excelブック更新処理実行 Dim count As Integer count = oCommand.ExecuteNonQuery() '更新レコード数のチェック If count = 0 Then MessageBox.Show("郵便番号簿の更新が失敗しました", "エラー") End If Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.ToString, "例外発生") Finally 'DB接続を閉じる If Not oConn Is Nothing Then oConn.Close() End If End Try End Sub ---------------------------------------------------------------------- ■■ 次号予告 第17号(11月6日頃発行予定) ■■ 1. VB.NETワンポイント 2. ADO.NET:Excelファイルの論理的な削除処理 ====================================================================== VB.NET データベースプログラミング奮闘記 第16号(2004.10.18) http://park5.wakwak.com/‾weblab/ ---------------------------------------------------------------------- このメールマガジン(マガジンID: 0000128094)は、 インターネットの本屋さん『まぐまぐ』から配信されています。 http://www.mag2.com/ 【購読中止の方法】購読の中止は次のホームページからお願い致します。 http://park5.wakwak.com/‾weblab/ http://www.mag2.com/m/0000128094.htm ---------------------------------------------------------------------- このメールマガジン及び、「すぐ使えるADO.NET」ホームページで公開してい るソースプログラム・データの利用により生じた損害等については、発行者は 一切責任を負いません。 ソースプログラムの再利用は自由です。著作権は発行者が所有します。 このメールマガジン及び、「すぐ使えるADO.NET」ホームページに掲載されて いる会社名・製品名等は、各社の登録商標または商標です。 ======================================================================
↑このページ(メルマガ:VB.NETデータベース) 先頭へ | すぐ使えるADO.NET ホームへ
Copyright© すぐ使えるADO.NET. All rights reserved.