バックナンバー: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.