DataAdapterオブジェクトのFillメソッドで読み込み
DataAdapterオブジェクトのFillメソッドを使って、TSV(タブ区切りテキスト)ファイルの全行を読み込み、リストボックスに表示するプログラムを作成します。
コントロール | プロパティ | 設定値 |
---|---|---|
ListBox1 | - | - |
BtnYomikomi | Text | 読込 |
Textファイル(ファイル名:syain.csv)のデータは、CSV形式で各データをカンマで区切っています。1行目は列タイトル行で、2行目以降がデータになっています。
"社員コード","社員氏名","社員カナ","部門コード" "00001","青山太郎","アオヤマタロウ","101" "00002","鈴木肇","スズキハジメ","101" "00003","佐々木健一郎","ササキケンイチロウ","102" "00005","田中和雄","タナカカズオ","101"
schema.iniファイル
[syainTsv.txt] ColNameHeader=False Format=TabDelimited Col1=社員コード Text Col2=社員氏名 Text Col3=社員カナ Text
【schema.iniファイルの補足】
- 1行目:セクションは、[ と ] で囲み、 読み込むテキストファイル名を指定
- 2行目:ColNameHeaderキーを、Trueにするとタイトル行あり、Falseにするとタイトル行なし
- 3行目:Formatキーに、区切り文字を設定します。区切り文字には、TabDelimited、CSVDelimited、Delimited(<1文字>)が設定できます。
- 4行目以降:Col1~キー以降に、各フィールドのフィールド名、データ型等を設定します。
TSVファイル 接続文字列
Provider引数は、Microsoft.Jet.OLEDB.4.0を指定
Data Source引数は、Textファイルのパスを指定。開発環境により異なるので、Application.StartupPathで取得
Extended Properties 引数はTextを指定(Extended Properties="Text")
【注意】文字列として " をコーディングするときは "" と二つ連続で記述
サンプルプログラム
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 FormTsvTextFile Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " ' 自動生成部分省略 #End Region '--------------------------------------------------------------- ' 読込ボタンクリック処理:TSVファイルを読込みListBoxに表示 '--------------------------------------------------------------- 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 da As New OleDbDataAdapter() Dim ds As New DataSet() Try ' DB接続文字列の設定 ' プロジェクトフォルダ下のbinフォルダにtsvファイルを置く con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Application.StartupPath & "\;" & _ "Extended Properties=""Text""" ' コネクションの設定 cmd.Connection = con ' SQL文の設定(社員コード順に表示する) cmd.CommandText = "SELECT 社員コード, 社員氏名, 社員カナ " cmd.CommandText &= "FROM syainTsv.txt " cmd.CommandText &= "ORDER BY 社員コード" ' データを取得する da.SelectCommand = cmd ds.Clear() da.Fill(ds) ' リストボックスに社員氏名を表示する Me.ListBox1.DisplayMember = "社員氏名" ' 社員氏名に対応した社員コードを取得する Me.ListBox1.ValueMember = "社員コード" ' リストボックスにsyainTsv.txtのデータを連結する Me.ListBox1.DataSource = _ ds.Tables(ds.Tables(0).ToString) Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.Message, "例外発生") End Try End Sub End Class