*

[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

関連記事

Unity_

[Unity]Unity2Dチュートリアル 画面上のGameObjectを左下から取得する

前回、画面上のオブジェクトを一括で手に入れる方法はわかりました。 しかし、これではどのオブジェクト

記事を読む

logo

[Java, jt400]AS400のCLからJavaをCallする方法。

久しぶりにAS400ネタ。 CLからJavaを呼び出したい!! JavaをCLから実行したい

記事を読む

unity socket

[Unity]Socket通信でP2Pすっぞ 接続待ち受け

P2Pしましょ。 まずはサーバーとして待ちうけまで作ります。 UnityだとNAT越えどうす

記事を読む

socket p2p unity

[Unity]Socket通信でP2Pすっぞ ホストへ接続

前回はホストが待ちうけするところまで作りました。 今回はクライアントがホストへ接続できるように

記事を読む

Unity_

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

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

記事を読む

logo

[Unity]Unity2Dでパズドラのようにタイルを動かす ソース解説

◆全文 using UnityEngine; using System.Collection

記事を読む

wannabenote

[jt400, java]AS400用のJavaをPCで実行したとき、終了しない理由

終了しない JavaでAS400をいじってると、たまに、終了しないんです。 プロセスが残ったまま

記事を読む

Wannabenote

[Unity]Unity2Dチュートリアル パズルをランダム生成して配置する。(PrefabとInstantiate)

Unity関連記事まとめページはこちら 前回の続き。 パズルを消すことが出来たのでランダ

記事を読む

logo

[C#, Generic]UnityのAddComponentとかなんとかComponentを実装してみる

UnityのAddComponentってありますよね。 みたいなやつ。 このジェネリクスの

記事を読む

logo

[jt400, Java]AS400のファイルを更新するためにREADした時にRecord Lockをかける

RPG3なんかだと更新用のファイルはREADの瞬間に自動でレコードロックがかかります。 で、それを

記事を読む

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 ↑