・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のメリットは大きいので、必要に応じて使えるといいですね!
データベースっぽくテキストファイルが使えるので、データをあまり残さないアプリにお勧めですね!