バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第19号】
第19号(2004.12.15発行) ====================================================================== ★★ VB.NETデータベースプログラミング奮闘記 ★★ ---------------------------------------------------------------------- ADO.NETの基本的なプログラミングを中心に掲載します。 末永くご購読の程よろしくお願い申し上げます。 すぐ使えるADO.NET --> サンプルプログラム満載 http://park5.wakwak.com/‾weblab/ ====================================================================== -----【目次】----- 1. ADO.NET:テキストファイルの読み込み 2. VB.NETワンポイント:Fillメソッドの注意点 ---------------------------------------------------------------------- ■■ ADO.NET:テキストファイルの読み込み ■■ テキストファイルのデータを読み込んで、リストボックスに表示する例を紹介 します。 テキストファイルsyain.txtは、1行目が項目名、2行目以降がデータとして、 各項目がカンマで区切られています。具体的には、下記のように、1行目に フィールド名が、2行目以降がデータとなっています。 "社員コード","社員氏名","社員カナ","部門コード" "00001","青山太郎","アオヤマタロウ","101" "00002","鈴木肇","スズキハジメ","101" "00003","佐々木健一郎","ササキケンイチロウ","102" "00005","田中和雄","タナカカズオ","101" : まず、新規プロジェクトをひとつ作成します。Button1がボタンで、 ListBox1はリストボックスです。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Button1 ListBox1 ┃ ┌――――┐ ┌―――――┐ ┃ │ 読込 │ │ │ ┃ └――――┘ │ │ ┃ │ │ ┃ │ │ ┃ │ │ ┃ └―――――┘ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ JetOLEDBプロバイダを使用して、テキストファイルにアクセスします。接続文 字列は、エクセルファイルと似ていますが、違うところもありますので注意し て下さい。 JetOLEDBプロバイダを使用しますので、今までと同様に、 Providerパラメータには、Microsoft.Jet.OLEDB.4.0を指定します。 Provider=Microsoft.Jet.OLEDB.4.0; Data Source パラメータには、テキストファイルのパスを指定します。 プロジェクトファイルホルダの下のbinホルダにsyain.txtを置けば、 Data Source= d:¥…¥...¥bin¥; Data Source= d:¥…¥...¥bin¥syain.txt; としませんので、注意して下さい。 d:¥…¥...¥binは、開発環境により異なりますので、実際には、 Application.StartupPath で取得します。 Extended Properties パラメータには、プロパティが3つあり、";"で区切って 指定します。 1番目は、データベースの種類で、テキストファイルには、Textを指定します。 2番目は、最初の行がヘッダー(フィールド名)か否かの指定で、最初の行が ヘッダーの場合には、HDR=YES を指定します。HDR=NO の場合は、自動的に フィールド名が付けられます。 3番目は、ファイルのフォマートの指定で、CSV形式のファイルの場合は、 FMT=Delimited を指定します。 CSVファイルから、社員コード、社員氏名、社員カナを取得するSELECT文 は、テーブル名の代わりに、ファイル名を指定します。 "SELECT 社員コード, 社員氏名, 社員カナ FROM syain.txt" リストボックスに社員氏名を表示するために、DisplayMemberプロパティに "社員氏名"を設定します。 Me.ListBox1.DisplayMember = "社員氏名" そして、DataSourceプロパティに、データセットのTablesプロパティ(DataSet に格納されているテーブルのコレクション)の先頭項目を文字列に変換して設 定します。 Me.ListBox1.DataSource = oDataSet.Tables(oDataSet.Tables(0).ToString) それでは、ソースリストを掲載します。 --【プログラムソースリスト】------------------------------------------ Imports System.Data.OleDb Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " '自動生成部分省略 #End Region Private Sub Button1_Click _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim oConn As New OleDbConnection() Dim oCommand As New OleDbCommand() Dim oDataSet As New DataSet() Dim oDataAdapter As New OleDbDataAdapter() Try 'DB接続文字列の設定 'プロジェクトファイルホルダの下にあるbinホルダにCSVファイルを置く oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=" + Application.StartupPath + "¥;" + _ "Extended Properties=""Text;HDR=YES;FMT=Delimited""" 'コネクションの設定 oCommand.Connection = oConn 'SQL文の設定 oCommand.CommandText = _ "SELECT 社員コード, 社員氏名, 社員カナ FROM syain.txt" 'データを取得する oDataAdapter.SelectCommand = oCommand oDataSet.Clear() oDataAdapter.Fill(oDataSet) 'リストボックスに社員氏名を表示できるように設定する Me.ListBox1.DisplayMember = "社員氏名" 'リストボックスにsyain.txtのデータを連結する Me.ListBox1.DataSource = _ oDataSet.Tables(oDataSet.Tables(0).ToString) Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.Message, "エラー") End Try End Sub End Class ---------------------------------------------------------------------- ■■ VB.NETワンポイント:Fillメソッドの注意点 ■■ Fillメソッドを使う時は、不要なレコードは読み込まないようにします。大量 のデータを取り込むと、メモリやネットワークに負担がかかりますし、データ 処理時間が長くなります。 たとえば、SQL文を "SELECT * FROM syain.txt" としたり、 "SELECT 社員コード, 社員氏名, 社員カナ FROM 社員テーブル" として、Fillメソッドを使うと、社員テーブルの全レコードをデータセットに 取り込むことになります。レコード数が非常に多い場合は、SQL文でWHERE句を 使うなどして、必要最小限のレコードを取り込むようにします。 "SELECT * FROM yubinBango.txt WHERE 市区町村名 = ""中央区""" とすれば、WHERE句を使って、選択したの行のみ取得できます。キー値で絞り 込めば、抽出レコードは1件になります。 "SELECT * FROM 社員テーブル WHERE 社員コード = @syainCode" とすれば、@syainCodeには、テキストボックスの入力値を使うこともできます。 また、全項目が必要な時以外は、*を使わず、 "SELECT 社員コード, 社員氏名, 社員カナ FROM syain.txt" として、必要項目のみ取得するようにします。 ---------------------------------------------------------------------- ■■ 次号予告 第20号(新年1月12日発行予定) ■■ いつも「VB.NET データベースプログラミング奮闘記」をご購読くださり、 ありがとうございます。今年最後の発行となりました。 来年は、Visual Basic 2005も登場します。このメールマガジンでも新機能や 拡張された言語仕様について、紹介いていくつもりですので、今後とも 「VB.NET データベースプログラミング奮闘記」をよろしくお願い申し上げます。 Visual Studio 2005 日本語ベータ1版の入手方法については、次のホーム ページに掲載されています。 http://www.microsoft.com/japan/msdn/vstudio/2005/beta/ それでは、皆様どうぞ良いお年をお迎えください。 ====================================================================== VB.NET データベースプログラミング奮闘記 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.