スタンダードな 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)