スタンダードな C# から ODBC を使用した読み取り処理のテンプレートです。
using System;
using System.Data.Odbc;
namespace MySQL
{
class Program
{
static void Main(string[] args)
{
// 新しい OdbcConnection オブジェクトを作成
OdbcConnection myCon = CreateConnection();
if (myCon == null)
{
Console.WriteLine("処理が異常終了しました");
return;
}
//---------------------------------------------------
// レコードセットを取得する為の SQL を準備
string myQuery = "SELECT 社員マスタ.*,DATE_FORMAT(生年月日,'%Y-%m-%d') as 誕生日 from 社員マスタ";
// SELECT 実行用のオブジェクトを作成
OdbcCommand myCommand = new OdbcCommand();
// 実行する為に必要な情報をセット
myCommand.CommandText = myQuery;
myCommand.Connection = myCon;
// 実行後にレコードセットを取得する為のオブジェクトを作成
OdbcDataReader myReader;
// ここで SELECT を実行してその結果をオブジェクトに格納する
myReader = myCommand.ExecuteReader();
// 読み出し
// Rewad メソッドは、行が存在する場合は true、それ以外の場合は false を返します
while (myReader.Read())
{
// 文字列
Console.Write(GetValue(myReader, "社員コード") + " : ");
Console.Write(GetValue(myReader, "氏名") + " : ");
// 整数
Console.Write(GetValue(myReader, "給与") + " : ");
// 日付
Console.Write(GetValue(myReader, "作成日") + " : ");
Console.Write(GetValue(myReader, "更新日") + " : ");
Console.Write(GetValue(myReader, "生年月日") + " : ");
Console.Write(GetValue(myReader, "誕生日"));
Console.WriteLine();
}
myReader.Close();
//---------------------------------------------------
EndConnection(myCon);
}
// ******************************************************
// 接続終了
// ******************************************************
static void EndConnection(OdbcConnection myCon)
{
// 接続を閉じる
myCon.Close();
// OdbcConnection オブジェクトに使用されているすべてのリソースを解放
myCon.Dispose();
// 処理終了
Console.WriteLine("処理が終了しました");
// 一時停止
Console.Write("Enterキーを押して下さい : ");
Console.ReadLine();
}
// ******************************************************
// 接続作成
// ******************************************************
static OdbcConnection CreateConnection()
{
// 新しい OdbcConnectionStringBuilder オブジェクトを作成
OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder();
// ドライバ文字列をセット ( 波型括弧{} は必要ありません )
// 文字列を正確に取得するには、レジストリ : HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
builder.Driver = "MySQL ODBC 5.3 Unicode Driver";
//builder.Driver = "MySQL ODBC 8.0 Unicode Driver";
// 接続用のパラメータを追加
builder.Add("SERVER", "localhost");
builder.Add("DATABASE", "lightbox");
builder.Add("UID", "root");
builder.Add("PWD", "");
// 内容を確認
Console.WriteLine(builder.ConnectionString);
// 新しい OdbcConnection オブジェクトを作成
OdbcConnection myCon = new OdbcConnection();
// 接続文字列を設定
myCon.ConnectionString = builder.ConnectionString;
// 接続を開く
try
{
myCon.Open();
}
catch (OdbcException ex)
{
Console.WriteLine("接続エラーです");
// Console.WriteLine( ex.Message )
ErrorAction(ex);
return null;
}
return myCon;
}
// ******************************************************
// エラー処理
// ******************************************************
static void ErrorAction(OdbcException ex)
{
string CrLf = "\r\n";
string errorMessages = "";
int i = 0;
for (i = 0; i <= ex.Errors.Count - 1; i++)
{
errorMessages += "Index #" + i.ToString() + CrLf + "Message: " + ex.Errors[i].Message + CrLf + "NativeError: " + ex.Errors[i].NativeError.ToString() + CrLf + "Source: " + ex.Errors[i].Source + CrLf + "SQL: " + ex.Errors[i].SQLState + CrLf;
}
Console.WriteLine(errorMessages);
}
// ********************************************************
// 列データ取得
//
// 列データを文字列として取得しますが、NULL の場合は
// 空文字列を返します
// ********************************************************
static string GetValue(OdbcDataReader myReader, string strName)
{
string ret = "";
int fld = 0;
// 指定された列名より、テーブル内での定義順序番号を取得
fld = myReader.GetOrdinal(strName);
// 定義順序番号より、NULL かどうかをチェック
if (myReader.IsDBNull(fld))
{
ret = "";
}
else
{
// NULL でなければ内容をオブジェクトとして取りだして文字列化する
ret = myReader.GetValue(fld).ToString();
}
// 列の値を返す
return ret;
}
}
}
以下は、show create table で取得した MySQL用の テーブル作成用 SQL です。
CREATE TABLE `社員マスタ` ( `社員コード` varchar(4) NOT NULL DEFAULT '', `氏名` varchar(50) DEFAULT NULL, `フリガナ` varchar(50) DEFAULT NULL, `所属` varchar(4) DEFAULT NULL, `性別` int(11) DEFAULT NULL, `作成日` datetime DEFAULT NULL, `更新日` datetime DEFAULT NULL, `給与` int(11) DEFAULT NULL, `手当` int(11) DEFAULT NULL, `管理者` varchar(4) DEFAULT NULL, `生年月日` datetime DEFAULT NULL, PRIMARY KEY (`社員コード`) )
|
|
【VS(C#)の最新記事】
- Replit : cs-list
- C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- C#( Form ) : ウインドウ枠の無い吹き出しの作成
- C# のタプル( Visual Studio 2017 でテスト )
- C# : インターネット上の JSON ファイルのフォーマットを クラスとして定義して1行でオブジェクト化して使用する
- C# の文法的文字列処理
- C# : System.Data.Odbc によるデータベースのテーブルからのデータ取得処理( サンプルの SQL は MySQL 用です )
- C# : Excel を データベースとして DataGridView に読み込む
- C# : dynamic 型 による Excel へのアクセス
- C# : フォームを表示せずに、通知領域にアイコンを表示させる常駐プログラム
- Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
- C# : SQL 文を外部テキストにして、String.Format でデータ部分を置き換えて利用する
- C# コンソールアプリを AN HTTPD で実行
- C# : SQLServer( SQLExpress ) の SMO を使用してテーブルの CREATE TABLE 文 を取得する
- C# : DataGridView に TKMP.DLL の IMAP(POP3) で受信したメールを非同期に表示する( 添付ファイルも取得 )
- C# : TKMP.DLLを使った、メール送信テンプレート
- C# と VB.net : TKMP.DLL を使って IMAP でメール本文の一覧を取得する( コンソール )
- C# でDataTable と DataSource を使用して、DataGridView にデータを表示するテンプレート( 行をダブルクリックしてダイアログを表示して行データを処理 )
- (C#) / VS2010 または VS2012 : TKMP.DLL(3.1.2 または 3.1.8)を使った、『さくらインターネット』用メール送信テンプレート
- C# でDXライブラリを使って簡単なシューティングをクラス化して標準化 / メインループとプレイヤー (4)






