*

[C#]AS400のメンバーを指定してデータにアクセスする

公開日: : AS400, C#, プログラミング

◆前提条件◆
CliantAccessをインストールしている。
.NET Framework3.5以上をインストールしている。

◆ソース◆

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Odbc;

namespace Hoge {
	class HogeHoge {
		private const string Provider = "{iSeries Access ODBC Driver}";
		private const string Source = "192.168.0.999"; // ホスト名指定
		private const string UserName = "HOGE";
		private const string UserPass = "HOGE";

		private const string WorkLib = "TMPLIB"; // For Work
		private const string WorkObj = "TMPFILE"; // For Work

		void HogeFunction(string lib, string obj, string mbr) {

			// create alias TMPLIB.TMPFILE for lib.obj(mbr)
			string sql =
				@"create alias " + WorkLib + "." + WorkObj + " for " + lib + "." + obj + "(" + mbr + ")";

			using (OdbcConnection con = GetOdbcConnectionToDB2()) {
				//aliasの作成
				using (OdbcCommand cmd = new OdbcCommand(sql, con)) {
					cmd.ExecuteNonQuery();
				}

				//データの取得
				sql =
					@"select * from " + WorkLib + "." + WorkObj;

				using (OdbcCommand cmd = new OdbcCommand(sql, con)) 
				using(OdbcDataReader reader = cmd.ExecuteReader()){
					string col = (string)reader["COL1"];
				}

				//aliasの削除
				sql = "drop alias " + WorkLib + "." + WorkObj;
				using (OdbcCommand cmd = new OdbcCommand(sql, con)) {
					cmd.ExecuteNonQuery();
				}

				con.Close();
			}
		}

		private OdbcConnection GetOdbcConnectionToDB2() {
			return GetOdbcConnectionToDB2(Provider, Source, UserName, UserPass);
		}

		private OdbcConnection GetOdbcConnectionToDB2(string provider, string source, string userName, string userPass) {
			OdbcConnection con = null;

			string[] strSet = {
                "Driver=" + provider +";",
                "System=" + source +";",
                "Uid=" + userName + ";",
                "Pwd=" + userPass +";",
            };
            string conStr = string.Join("", strSet);

			con = new OdbcConnection(conStr);

			return con;
		}
	}
}

◆解説◆
どうしてもPFのメンバー指定でデータをアクセスしたいときに取る方法です。
一時的にAliasを作成して、そのAliasを参照しています。

これを作った理由は私が自分用のASのRPGテキストエディタを作る為でした。
ソースはメンバー単位で管理されるのが非常に厄介です。



ad

関連記事

logo

[C#]パスワード暗号化プログラムの初歩

パスワード暗号化の初歩的方法。 子供だましみたいなプログラムですね。 これは入社四か月の頃にプロ

記事を読む

logo

AS400のインターフェースファイル

AS400にODBC接続するときに、ライブラリ名一覧が欲しい場合があります。 さて、それでは、

記事を読む

Wannabenote

[Unity]Unity2Dチュートリアル パズルを落下させる。

前回の続き。 とりあえず、パズルが消えたので、パズルを落としましょう。 以下のようにソースを

記事を読む

Excel Csharp

[C#]DataGridViewにプロパティを利用しながら配列をバインドする。

DataGridView C#のFormにデータを表示するのに便利なコントロールがあります。 デ

記事を読む

logo

[iTextSharp,C#]TifファイルをPDFに変換する。

TifファイルをPDFに変換してほしいと言われて作ったときのソースのメイン部分を抜粋です。 確

記事を読む

Unity_

[Unity]Unity2Dチュートリアル スプライトを利用する その2

前回で、タイルを置いて、全部消えちまうじゃねぇか! 色一個一個つけるのめんどくせぇ!! というところ

記事を読む

unity moving

[Unity]コードリファレンス Componentを取得する。削除する。

コンポーネントを取得して削除します。 GetComponent コンポーネントの追加と同じよ

記事を読む

VisualStudio_

[c++,cpp]C++でじゃんけんをしよう

過去に書いた超くだらないソースを見つけたので衝動的にうp。 C++でじゃんけんをしよう!

記事を読む

logo

[Unity]Unity 2Dチュートリアル スプライトをドラッグ(タップ)して移動する ソース解説

◆全文 using UnityEngine; using System.Collection

記事を読む

Unity_

[Unity]Unity4.6 UIチュートリアル Lesson6.UI Events and Event Triggers 日本語要約

前回の続き。 ついにずっと画面で見えていた謎のEventSystemに触れます。 なんか

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑