SQLの窓

2017年08月17日


C# : System.Data.OleDb で Microsoft Access のデータを読み取る

出力ウインドウに結果を表示する為に、Debug.WriteLine を使用していますが、他のメッセージが邪魔なので、デバッグ =>オプション の 『出力』で、【全てのデバッグ出力】以外を オフにしています。



元々は、VB.net でしたが、Telerik Code Converter で変換して少し手を加えました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Diagnostics;

namespace MsAccess1 {
	class Program {
		static void Main(string[] args) {

			using (OleDbConnection myCon = new OleDbConnection())
			using (OleDbCommand myCommand = new OleDbCommand())
			{
				// SQL文字列格納用
				string myQuery = null;
				string myPath = @"C:\tmp\販売管理C.accdb";
//				string myPath = @"C:\tmp\販売管理C.mdb";	// 古い MsAccess

				// 接続文字列の作成
				myCon.ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", myPath);
				// 出力ウインドウに表示
				// デバッグ>オプション の 『出力』で、【全てのデバッグ出力】以外を オフにする
				Debug.WriteLine(myCon.ConnectionString);

				// *********************
				// 接続
				// *********************
				try {
					// 接続文字列を使用して接続
					myCon.Open();
					// コマンドオブジェクトに接続をセット
					myCommand.Connection = myCon;
					// コマンドを通常 SQL用に変更
					myCommand.CommandType = System.Data.CommandType.Text;
				}
				catch (Exception ex) {
					Debug.WriteLine(ex.Message);
					return;
				}

				myQuery = "select * from 社員マスタ";
				myCommand.CommandText = myQuery;

				// *********************
				// レコードセット取得
				// *********************
				try {
					using (OleDbDataReader myReader = myCommand.ExecuteReader())
					{
						// *********************
						// 列数
						// *********************
						int nCols = myReader.FieldCount;
						Type fldType;

						// カラムループ用
						int idx = 0;
						while (myReader.Read()) {

							for (idx = 0; idx <= nCols - 1; idx++) {
								if (idx != 0) {
									Debug.Write(",");
								}

								// NULL でない場合
								if (!myReader.IsDBNull(idx)) {
									// 列のデータ型を取得
									fldType = myReader.GetFieldType(idx);

									// 文字列
									if (fldType.Name == "String") {
										Debug.Write(myReader.GetValue(idx) + "");
										continue;
									}
									if (fldType.Name == "Int32") {
										Debug.Write(myReader.GetInt32(idx).ToString() + "");
										continue;
									}
									if (fldType.Name == "DateTime") {
										Debug.Write(myReader.GetDateTime(idx).ToString() + "");
										continue;
									}

									Debug.Write(myReader.GetValue(idx).ToString() + "");

								}
								else {
									Debug.Write("");
								}
							}
							// 1行の最後
							Debug.WriteLine("");

						}

						// リーダを使い終わったので閉じる
						myReader.Close();
					}
				}
				catch (Exception ex) {
					myCon.Close();
					Debug.WriteLine(ex.Message);
					return;
				}

				myCon.Close();

			}	// 最外の using の終わり

		}	// Main の終わり
	}	// class の終わり
}	// namespace の終わり




【VS(C#)の最新記事】
posted by lightbox at 2017-08-17 23:15 | Comment(0) | VS(C#) | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり