プロバイダファクトリDbProviderFactoryを利用して、マスターテーブル検索のプログラムを作成します。
名前空間System.Data.CommonのDbProviderFactoryインスタンスを生成して、ここから、 DbConnection、DbCommand、DbParameter、DbDataAdapter のインスタンスを生成すれば、汎用的プログラムを作成できます。
たとえば、DBMSを変更しても、インスタンス生成時の引数や、接続文字列の取得など、最小限の変更ですみます。
' DbProviderFactoryインスタンス生成
fa = DbProviderFactories.GetFactory("System.Data.SqlClient")
' 接続文字列をapp.configファイルから取得
settings = ConfigurationManager.ConnectionStrings("販売管理ConnectionString")

DbProviderFactoryインスタンスを生成して、SQLServer 2008 Express Edition の販売管理データベースの社員テーブルから、入力した社員コードのデータを表示するプログラムを作成します。
最初に、参照の追加で、System.Configurationを追加して、プロジェクトにインポートしてください。System.Data.Commonもインポートします。
検索ボタンクリック処理は、次のように実装します。
Option Strict On Imports System.Data.Common Imports System.Configuration Public Class FormProviderFactoryRetrieval Private Sub BtnRetrieval_Click _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles BtnRetrieval.Click ' 入力エラーチェック If TxtTokuisakiCode.Text = Nothing Then MessageBox.Show("得意先コードが未入力です", "エラー") Exit Sub End If Try ' SQL ServerのDbProviderFactoryインスタンス生成 Dim fa As DbProviderFactory fa = DbProviderFactories.GetFactory("System.Data.SqlClient") ' DbConnection, DbCommandクラスのインスタンス生成 Using con As DbConnection = fa.CreateConnection() Using cmd As DbCommand = fa.CreateCommand() Dim settings As ConnectionStringSettings ' 接続文字列をapp.configファイルから取得 settings = ConfigurationManager. _ ConnectionStrings("販売管理ConnectionString") If settings Is Nothing Then ' 接続文字列取得エラー MessageBox.Show("app.configに未登録","接続文字列") Exit Sub Else ' 接続文字列の設定 con.ConnectionString = settings.ConnectionString ' Connectionプロパティの設定 cmd.Connection = con End If ' SQL文の設定 cmd.CommandText = "SELECT * FROM 得意先マスター表" & _ " WHERE 得意先コード = @KeyValue" ' SQL文の引数設定 Dim par As DbParameter = fa.CreateParameter() par.ParameterName = "@KeyValue" par.Value = TxtTokuisakiCode.Text cmd.Parameters.Add(par) ' DbDataAdapterクラスのインスタンス生成 Dim da As DbDataAdapter da = fa.CreateDataAdapter ' レコード取得 Dim dt As New DataTable() da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 1 Then ' レコードがあった時 LblTokuisakiMeisho.Text = CStr(dt.Rows(0)("得意先名称")) LblTokuisakiJusho.Text = CStr(dt.Rows(0)("得意先住所")) Else ' レコードが無い時 LblTokuisakiMeisho.Text = Nothing LblTokuisakiJusho.Text = Nothing MessageBox.Show _ ("入力した得意先コードのデータなし", "入力エラー") End If End Using End Using Catch ex As Exception MessageBox.Show(ex.ToString, "【例外発生】") End Try End Sub End Class
| ◆ DBアクセス TOP頁へ ◆ |
|---|
| ◆ SQL Server ◆ |
| Sql ExecuteScalar |
| Sql ExecuteReader |
| Sql ComboBox |
| Sql ListBox |
| Sql DataGridView |
| ◆ MDB ◆ |
| Ole ExecuteScalar |
| Ole ExecuteReader |
| Ole ComboBox |
| Ole ListBox |
| Ole DataGridView |
| ◆ 受注エントリー TOP頁 ◆ |
|---|
| テーブル定義 |
| データ接続の追加 |
| システム日付取得 |
| DataGridView列スタイル |
| フォームロード・初期化 |
| DBアクセス基本クラス |
| 商品クラス |
| 得意先クラス |
| 受注ディテールクラス |
| 受注ヘッダークラス |
| 受注伝票データクラス |
| 受注伝票アクセスクラス |
| 行確認・追加ボタン |
| 得意先確認・変更ボタン |
| 明細行変更・完了ボタン |
| 明細行削除ボタン |
| 受注登録ボタン |
| クリアボタン |