DataAdapterオブジェクトのFillメソッドで読み込み
DataAdapterオブジェクトのFillメソッドを使って、CSV(カンマ区切りテキスト)ファイルの全行を読み込み、リストボックスに表示するプログラムを作成します。
コントロール | プロパティ | 設定値 |
---|---|---|
ListBox1 | - | - |
BtnYomikomi | Text | 読込 |
Textファイル(ファイル名:syain.csv)のデータは、CSV形式で各データをカンマで区切っています。1行目は列タイトル行で、2行目以降がデータになっています。
"社員コード","社員氏名","社員カナ","部門コード" "00001","青山太郎","アオヤマタロウ","101" "00002","鈴木肇","スズキハジメ","101" "00003","佐々木健一郎","ササキケンイチロウ","102" "00005","田中和雄","タナカカズオ","101"
CSVファイル 接続文字列
Provider引数は、Microsoft.Jet.OLEDB.4.0を指定
Data Source引数は、Textファイルのパスを指定。開発環境により異なるので、Application.StartupPathで取得
Extended Properties 引数にはプロパティが3つあり、";"で区切って指定
- 1番目:データベースの種類で、テキストファイルの場合には、Textを指定
- 2番目:最初の行がヘッダー(フィールド名)か否かの指定で、最初の行がヘッダーの場合には、HDR=YES、HDR=NO の場合は、自動的にフィールド名が付けられる
- 3番目:ファイルのフォマート指定で、CSV形式なら FMT=Delimitedを指定
【注意】文字列として " をコーディングするときは、 "" (2個連続)で記述
サンプルプログラム
ソースリストの枠内をクリックすると全選択できます。
Imports System.Data.OleDb Public Class FormCsvTextFile Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " ' 自動生成部分省略 #End Region '-------------------------------------------------------------- ' 読込ボタン押下処理 ' CSVファイルを読込み、氏名をリストボックスに表示 '-------------------------------------------------------------- Private Sub BtnYomikomi_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnYomikomi.Click Dim con As New OleDbConnection() Dim cmd As New OleDbCommand() Dim ds As New DataSet() Dim da As New OleDbDataAdapter() Try ' DB接続文字列の設定 ' プロジェクトフォルダ下のbinフォルダにcsvファイルを置く con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Application.StartupPath & "\;" & _ "Extended Properties=""Text;HDR=YES;FMT=Delimited""" ' コネクションの設定 cmd.Connection = con ' テキストファイルを読み込むSQL文の設定 cmd.CommandText = _ "SELECT 社員コード, 社員氏名, 社員カナ FROM syain.csv" ' データを取得する da.SelectCommand = cmd ds.Clear() da.Fill(ds) ' リストボックスに社員氏名を表示できるように設定する Me.ListBox1.DisplayMember = "社員氏名" ' 社員氏名に対応した社員コードを取得できるように設定する Me.ListBox1.ValueMember = "社員コード" ' リストボックスにsyain.txtのデータを連結する Me.ListBox1.DataSource = ds.Tables(ds.Tables(0).ToString) Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.Message, "例外発生") End Try End Sub End Class