スタンダードな C# から ODBC を使用した読み取り処理のテンプレートです。 ▼ 以下のようなデータで実行
using System; using System.Data.Odbc; namespace MySQL1 { class Program { static void Main(string[] args) { // ******************************* // 接続文字列作成 // ******************************* // 新しい 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); // 一旦停止 Console.ReadLine(); using (OdbcConnection myCon = new OdbcConnection()) using (OdbcCommand myCommand = new OdbcCommand()) { // ******************************* // 接続 // ******************************* try { myCon.ConnectionString = builder.ConnectionString; myCon.Open(); } catch (OdbcException ex) { Console.WriteLine("接続エラーです"); string errorMessages = ""; int i = 0; for (i = 0; i < ex.Errors.Count; i++) { errorMessages += $"Index #{i.ToString()}\r\nMessage: {ex.Errors[i].Message}\r\nNativeError: {ex.Errors[i].NativeError.ToString()}\r\nSource: {ex.Errors[i].Source}\r\nSQL: {ex.Errors[i].SQLState}\r\n"; } Console.WriteLine(errorMessages); // 一旦停止 Console.ReadLine(); // アプリケーション終了 return; } // ******************************* // レコードセットを取得する為の SQL // ※ DATE_FORMAT は MySQL 用 // ******************************* string myQuery = "SELECT 社員マスタ.*,DATE_FORMAT(生年月日,'%Y-%m-%d') as 誕生日 from 社員マスタ"; // 実行する為に必要な情報をセット myCommand.CommandText = myQuery; myCommand.Connection = myCon; // 実行後にレコードセットを取得する為のオブジェクトを作成 // ( SQL の実行結果 ) OdbcDataReader myReader = myCommand.ExecuteReader(); // ******************************* // 読み出し // Read メソッドは、行が存在する場合は true、 // それ以外の場合は false を返します // ******************************* while (myReader.Read()) { string result = ""; // 列定義は文字列 result += $"{GetValue(myReader, "社員コード")} : "; result += $"{GetValue(myReader, "氏名")} : "; // 列定義は整数 result += $"{GetValue(myReader, "給与")} : "; // 列定義は日付 result += $"{GetValue(myReader, "作成日")} : "; result += $"{GetValue(myReader, "更新日")} : "; result += $"{GetValue(myReader, "生年月日")} : "; result += $"{GetValue(myReader, "誕生日")}"; // 内容をコンソールに表示 Console.WriteLine(result); } // リーダーを閉じる myReader.Close(); // 接続を閉じる myCon.Close(); } // 接続の終わり // 一旦停止 Console.ReadLine(); } // ******************************************************** // 列データ取得 // // 列データを文字列として取得しますが、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; } } }
実行結果 関連する Microsoft ドキュメント OdbcConnectionStringBuilder クラス OdbcConnection クラス OdbcCommand クラス OdbcDataReader クラス このページの PDF
|
【VS(C#)の最新記事】
- Replit : cs-list
- C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- C#( Form ) : ウインドウ枠の無い吹き出しの作成
- C# のタプル( Visual Studio 2017 でテスト )
- C# : インターネット上の JSON ファイルのフォーマットを クラスとして定義して1行でオブジェクト化して使用する
- C# の文法的文字列処理
- C# : Excel を データベースとして DataGridView に読み込む
- C# : dynamic 型 による Excel へのアクセス
- C# : フォームを表示せずに、通知領域にアイコンを表示させる常駐プログラム
- Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
- C# : System.Data.Odbc データ取得(SELECT)処理( MySQL ) : ※ using 無し( Dispose 実行 )
- 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)