【ODBC使用】C#でcsvのデータを読み取る方法

こんなことが分かるよ

・ODBCの使い方

・C#でcsvデータを読み取る方法

・C#でODBCを使う方法

・テキストファイルをSQL文で接続する方法

社畜
社畜

ODBCを使ってテキストのデータを読み取る(SELECT文を使用する)方法を学んだので共有します!

こんな人向け

・ODBCの使い方が知りたい

・テキストファイルをSQL文で接続したい

・とにかくC#のソースコードが見たい

環境

OS:Windows 11 Home

SDK:VisualStudio2022

開発言語:C#

プロジェクトテンプレート:WindowsForm

今回は目次のStep1~Step4に沿って操作すればテキストファイルにSQL文で接続する方法が分かる内容になっています。

Step1:テキストドライバーの準備

まずはテキストファイルとプログラム間のデータ転送を簡単に行うためのコンポーネント(ODBCドライバー)をインストールします。

下記URLから64bit版を選択してダウンロードしてください。

Download Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント from Official Microsoft Download Center

ダウンロードを押すと、プログラムの選択画面が表示されるので、

「AccessDatabaseEngine_X64.exe」を選択してください。

ダウンロードされた「AccessDatabaseEngine_X64.exe」を実行してください。

これで、テキストドライバーの準備は完了です。

Step2:ODBCの設定

検索アイコンで「ODBC データ ソース (64 ビット)」と検索して、アプリを開いてください。

追加をクリックしてください。

「Microsoft Access Tect Driver (*.txt, *.csv)」を選択して完了を押してください。

①データソース名は「TestCSV」と入力

 これは任意の名前で大丈夫です。

 この後プログラムでODBCにアクセスするときの接続文字列(DNS)に使われます。

②「現在のフォルダーを使用する」のチェックを外します。

③「フォルダーの選択」をクリックします。

④CドライブのODBC(CSV)フォルダを選択します。

 ※このフォルダはあらかじめ作成しておきます。

DNS(データソース名)とフォルダーを確認したら「OK」をクリックします。

これで、ODBCの設定は以上です。

Step3:CSVの配置

Step2の④で選択した「TestData」フォルダの中に「Test.csv」を作っておきます。

このファイルがDBのテーブルに該当します。

Test.csvの中身はこのように書いておきます。

一行目がカラムで、2行目以降がデータになります。

SELECT文実行後にこちらのデータが取得できるはずです。

これでCSVの配置は以上です。

Step4:C#で実装

それではC#でODBCドライバーとデータソース(Test.csv)へアクセスしデータを読み取るプログラムを実装します。

テンプレートはWindowsFormを用いました。

社畜
社畜

前回はC++で実装しましたが、今回はC#でやってみました。

コード量が少なくて驚きです。

下記のプログラムをコピペでデータソースへの接続、読み取りが行えます。

using System.Data;
using System.Data.Odbc;

namespace CsvODBC
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 接続文字列
            string connectionString = @"DSN=TestCSV;";
            // データテーブルを生成
            var Result = new DataTable();
 
            try
            {
                // コネクションを生成
                using (var connection = new OdbcConnection(connectionString))
                {
                    // コネクションを接続
                    connection.Open();

                    // SQL文を定義
                    var sql = "SELECT * FROM Test.csv";
                    // コマンドを生成
                    using (var commnad = new OdbcCommand(sql, connection))
                    {
                        // アダプタを生成
                        using (var adapter = new OdbcDataAdapter(commnad))
                        {
                            // SQL文実行
                            adapter.Fill(Result);
                            // 結果をデータグリッドに表示
                            this.dataGridView1.DataSource = Result;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

デザインにデータグリッドとボタンを追加し、読み取りデータを表示します。

実行すしボタンを押下すると、データグリッドに先ほど「Test.csv」に記載したデータが表示されます。

実装は以上です。

まとめ

上記の手順でODBCを利用して*.csvファイルからSQL文を使ってデータの読み取りができました。

ODBCを使うとデータベースを意識することなく実装できます。

社畜
社畜

ODBCのメリットは大きいので、必要に応じて使えるといいですね!

データベースっぽくテキストファイルが使えるので、データをあまり残さないアプリにお勧めですね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA