.NETの最近の記事

【.NET】エバンジェリスト本

マイクロソフトのエバンジェリストの方々の共著で、
こんな感じの書籍も最近出たみたいです。

.NET開発テクノロジ入門

詳しい内容については、コチラにあります。

【.NET】LINQでMySQLに繋ぐ

| コメント(5)

昨日、何の会話からそうなったのかは忘れましたが、
.NET(C#)からLINQ経由でMySQLを触りたいですよねーって話を会社でしてました。

まぁなかなかそんなことをしている人もいないと思うのですが、
ちょっと調べてみたら「LINQ <-> ADO.NET <-> MySQL」で遊ぶのが正しいようだと
いうことが分かってきました。

[Think IT] 第1回:LINQとADO.NET Entity Framework (1/3)
C#でMySQLに接続

まだあんまり読めてませんが、下記書籍にもそのようなことが書いてあります。

ちょっと今は遊んでいる時間が取れないので、
また今度遊んでみたいと思います。

ちなみに、、、
Amazonでこんなkの物欲を刺激する本がありました。。。

プログラミングMicrosoft SQL Server 2008 上 (マイクロソフト公式解説書)

プログラミングMicrosoft SQL Server 2008 下 (マイクロソフト公式解説書)

SQLServerでプログラミング・・・・
うーーーん、魅かれる♪

ついにASP.NET?

| コメント(12)

EclipseRCPで構築する手筈になっていた件ですが、
どうもASP.NETも有望視されているようで、検討してみて、というお達しがありました。

なるほどねー、というしかありませんが、
以前購入していて本棚で眠っていた書籍が役に立つ時が来たようです。

独習ASP.NET2.0


プログラミングC# 第5版
   


プログラムを作ろう!Microsoft Visual Web Developer 2008 Express Edition入門

以前、

【DB2】DB2でLINQを使う(のに失敗)
【DB2】DB2でLINQを使う(準備が整う)

というのを書きました。
で、もしかすると別の案件で.NET+DB2っていうのが出てきそうな感じなので、
今日は仕事中に堂々と"調査"しました。

基本はこの↓ページに書かれていることをやります。
Develop a sample application using LINQ programming and the ADO.NET Entity Framework with IBM DB2, IDS, and U2 servers


まず、新規プロジェクトを作成します。
※設定する値等は、参照するdeveloperWorksの記事に極力合わせます。

testef01.jpg

作成するWindowsFormはこんな感じになります。
ComboBox:1コ
DataGridView:1コ
Button:2コ

testef02.jpg

Entity Data Modelはこんな感じで進めていきます。

testef03.jpg

「データベースから生成」を選択。

testef04.jpg

「新しい接続」ボタンをクリック。

testef05.jpg

下記画面のように選択します。

testef06.jpg

接続先のサーバーはとりあえずlocalhost。
ユーザーはdb2admin。
接続先データベースはSAMPLEに変更。
設定が終わった「テスト接続」をクリック。

testef07.jpg

問題が無ければ、接続テスト完了。

testef08.jpg

「次へ」ボタンを押すとDBと接続を開始します。

testef09.jpg

接続中・・・・

testef10.jpg

データベースオブジェクトを選択。

testef11.jpg

Entityモデルが生成されました。

testef12.jpg

で、こっからはソースコードの補足。


■closeボタンの実装(C#)

private void closeForm_Click(object sender, EventArgs e)
{
    m_context.Dispose();
    Close();
}


■フォームのロード処理の実装(C#)

private void Form1_Load(object sender, EventArgs e)
{
    m_context = new SAMPLEEntities();
    // SELECT * FROM EMPLOYEE のイメージ
    var query = from d in m_context.EMPLOYEE
                select d;
    try
    {
        // ComboBoxに設定するカラム(データ)
        this.comboBox.DisplayMember = "FIRSTNME";
        this.comboBox.DataSource = query;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

}


■ComboBoxが選択された際の実装(C#)

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        EMPLOYEE empList = (EMPLOYEE)this.comboBox.SelectedItem;
        // SELECT * FROM EMPLOYEE E, EMP_PHOTO EP
        // WHERE EP.EMPNO = E.EMPNO のイメージ
        var query = from o in m_context.EMP_PHOTO
                    where o.EMPNO == empList.EMPNO
                    select o;
        // データグリッドビューに設定
        dataGridView.DataSource = query;
        dataGridView.AutoResizeColumns(
                        DataGridViewAutoSizeColumnsMode.AllCells);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


この実装で、画面に何が出てくるかはお楽しみです♪

以前、

【DB2】DB2でLINQを使う(のに失敗)

というのを書きましたが、

【DB2】Fixpakを当て直す(結局、アンインストール&再インストール)

というエントリでDB2側の問題を修正したので、
改めてDB2 <=> LINQを試してみようと、クライアント側の環境を諸々セットアップし直しました。

Develop a sample application using LINQ programming and the ADO.NET Entity Framework with IBM DB2, IDS, and U2 servers
  ↑
環境セットアップの詳細等が記載されています。
今回のkがセットアップし直した環境は以下の通り。

■物理マシン■
・Windows XP Home SP3
・Visual Studio 2008 Professional SP1

■データベース仮想マシン■
・Windows Server 2003 SE R2 SP2(32bit)
・DB2V9.5 EE FP3b

前回失敗していたテスト接続の結果は、
以下の画面ショットの通りに見事に成功しました!!

testconn20.jpg

いやいや。
まさかこんな結果になるとは思いませんでしたが、
やりたかったことの事前準備が整ったので、今後時間を見つけて、
DB2 <=> LINQの実装をやってみます!!

Develop a sample application using LINQ programming and the ADO.NET Entity Framework with IBM DB2, IDS, and U2 servers

参照先の記事にあるように、DB2でLINQを使ってみるべし!!と思ったのでやってみましたが、
結論から言うと、全然ダメでした。。。

kの試した環境は以下の通りです。

■物理マシン1■
・Windows XP Professional SP2
・Visual Studio 2008 Professional SP1
・DB2V9.5 EE FP3b

■物理マシン2■
・Windows XP Home SP3
・Visual Studio 2008 Professional SP1

■仮想マシン1■
・Windows Vista SP1
・Visual Studio 2008 Professional SP1

■仮想マシン2■
・Windows Vista SP1
・Visual Web Developer 2008 SP1

■データベース仮想マシン■
・Windows Server 2003 SE R2 SP2(32bit)
・DB2V9.5 EE FP3b


まず物理・仮想の各クライアントマシンでやってみた、
「IBM Data Server Driver for ODBC, CLI, and .NET」のインストールですが、
画面のように必ずエラーになってしまいます。

db2lswtchCLI_error.jpg

いやらしいのが、画面上はエラーと出ていますが、
この後「インストール完了」のダイアログが出るんですよ、これがまた。
で、その後の手順をどんどん次に進めていくことができるのですが、
どーもこれが一番悪いんじゃないか?と思っています。
ちなみに「IBM Data Server Driver for ODBC, CLI, and .NET」をアンインストールする際も、
このエラーダイアログが表示されていました。


次に、上記を無視して進んでいった場合の話ですが、
DB2に対して以下のようなコマンドを発行してテスト接続してみよう、とあるのですが、
これが全然うまくいきません。

testconn20 database=sample;server=localhost:50000;userid=user;password=password


kのトコではこんな感じでガンガンエラーが出ていました。

C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin>testconn20 database=sample;server=localhost:50000;userid=db2admin;password=db2admin

Step 1: Printing version info
.NET Framework version: 2.0.50727.3053
DB2 .NET provider version: 9.0.0.2
DB2 .NET file version: 9.5.3.2
Capability bits: ALLDEFINED
Build: 20090226
Factory for invariant name IBM.Data.DB2 verified
Factory for invariant name IBM.Data.Informix verified
IDS.NET from DbFactory is Common IDS.NET
VSAI assembly version: 9.1.0.0
VSAI file version: 9.5.3.254
Elapsed: 29

Step 2: Connecting using "database=sample;server=localhost:50000;userid=db2admin;password=db2admin"

Unable to open socket to server:

0ERROR [08001] [IBM] SQL30081N 騾壻ソ。繧ィ繝ゥ繝シ縺梧、懷?縺輔l縺セ縺励◆縲?菴ソ逕ィ
縺輔l縺滄 壻ソ。繝励Ο繝医さ繝ォ:"TCP/IP"縲?菴ソ逕ィ縺励※縺?k騾壻ソ。 API: "SOCKETS"
縲?繧ィ繝ゥ繝シ縺梧、懷?縺輔l縺溘Ο繧ア繝シ繧キ繝ァ繝ウ: "127.0.0.1"縲?繧ィ繝ゥ繝シ繧呈、懷?縺励◆ 騾壻ソ。髢「謨ー:"recv"縲?繝励Ο繝医さ繝ォ蝗コ譛峨お繝ゥ繝シ繝サ繧ウ繝シ繝? "10054"縲?%2S"縲?%3S"縲 SQLSTATE=08001


Some things to consider:
- is the port number correctly specified
50000 is the default for LUW servers
svcename dbm cfg parm for LUW servers
446 is the only port for iSeries servers, default for zSeries
- for a LUW server, is the TCPIP listener started
db2set DB2COMM=TCPIP, db2stop / db2start


Test failed.

C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin>


なんとなーく、ソケットが開いてねぇとか、
エラーコードからググって引っかけたSQL30081NやDB2をstop/startした際に吐かれたSQL5043NをDB2Forumのやりとりを参考にしてみるものの、今のところ解決していないです。


ちなみにデータベース仮想マシンで同じことをやってみると、
以下のようになります。

C:\Program Files\IBM\SQLLIB\BIN>testconn20.exe database=sample;server=localhost: 50000;userid=db2admin;password=db2admin

Step 1: Printing version info
.NET Framework version: 2.0.50727.832
DB2 .NET provider version: 9.0.0.2
Capability bits: ALLDEFINED
Build: 20081210
Factory for invairant name IBM.Data.DB2 verified
Elapsed: 6.202034

Step 2: Connecting using "database=sample;server=localhost:50000;userid=db2admin
;password=db2admin"
0ERROR [58005] [IBM][DB2.NET] SQL0902 An unexpected exception has occurr
ed in Process: 3496 Thread 1 AppDomain: 名前:testconn20.exe
コンテキスト ポリシーがありません。
Function: SQLConnect
CallStack: 場所 System.Environment.GetStackTrace(Exception e, Boolean needFi
leInfo)
場所 System.Environment.get_StackTrace()
場所 IBM.Data.DB2.DB2ConnPool.HandleUnknownErrors(String strFncMsg, Exception
exception, Boolean bThrow)
場所 IBM.Data.DB2.DB2ConnPool.DB2ConnWrapper.Open(String szConnectionString,
IsolationLevel isolevel, Int32 iQueryTimeout, DB2Connection connection, Int32& c
onnectionTimeout, Int32& iServerCP)
場所 IBM.Data.DB2.DB2ConnPool.Open(DB2Connection connection, String& szConnec
tionString, DB2ConnSettings& ppSettings, Object& ppConn)
場所 IBM.Data.DB2.DB2Connection.Open()
場所 TestConn.myClassName.Connect()
場所 TestConn.myClassName.RunSteps()
場所 TestConn.myClassName.Main(String[] args) InnerException Message: 保護さ
れているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れて
いることが考えられます。 Check InnerException property for more detail. SQLSTAT
E=58005

Test failed.


情報を整理すると、

1.「IBM Data Server Driver for ODBC, CLI, and .NET」のインストールに失敗する。
2.「IBM Database Add-ins for Visual Studio」のインストールは成功する。
3.1やテスト接続が失敗してもチュートリアルは先に進むことができるが、
  アプリケーションの作成中にEDMを作成する際、エラーになるので先へ進めなくなる。
4.コマンドでのテスト接続が失敗すると、DB2がstopする。
5.FP3bのServer Driverだけでなく、FP3aでも同様の事象が発生している。

となっています。
多分、kのところの環境だけ(物理と仮想で4台ですが、、、)なのかな。

追って調査しますが、とりあえずご報告です。

プログラミングC# 第5版

まだ読み始めたところなので、レビューではありませんが、
なかなか良いです。
初心者が知りたいようなことが書いてありますねー。
もちろん玄人さんにもオススメだと思います。

まぁ、Java専門のkがC#の、しかもオライリーの本なんかを買うとは、
1年位前は想像していなかったです。

それくらい、C#には興味があるし、色々と応用ができそうなんですねー。

よく混同するパターン

| コメント(2)

NASIMさんのブログにあったので思い出したのですが、kもよく間違うパターンがあります。
それはif文の書き方です。

◆Java/PHP
if (条件式) {
 ・・・・・・・・
} else {
 ・・・・・・・・
}

◆VB
If (条件式) Then
 ・・・・・・・・
ELSE
 ・・・・・・・・
End If

◆ksh
if [[ 式 ]] ; then
 ・・・・・・・・
else
 ・・・・・・・・
fi

時々、if文の締め方が分からなくなるんですよね。
kshを書いている時にVBの締め方をよくやってます。
あとVBを書いた時に、Java/PHPの締め方をやっちゃいますね。
他には、最近特に間違うのが、仕事で使っているDB2とMySQLのSQLの書き方です。
例えば、最初の何行かを取得したい場合、、、、

◆DB2
SELECT * FROM テーブル名 FETCH FIRST n ROWS ONLY;

◆MySQL
SELECT * FROM テーブル名 LIMIT n;

※ちなみにOracleだと「SELECT * FROM テーブル名 WHERE ROWNUM < n;」ですが、
※ROWNUMを使用するのは本当はよろしくないんですよね、確か。

FETCH FIRST と LIMITをお互いに間違えて書きます。
色々触っていると色々な書き方があるので混同する原因になる訳です。
まぁ、覚えないと仕事にならないので仕方ありませんけどね。

Silverlight + Java(発表当日)

| コメント(1)

課題発表当日。

早い段階でSilverlightとJavaアプリケーションの連携が実現できたので、もっといいものにしようと色々やってみたのですが、どれもこれもうまくいかず。。。。

SilverlightとWPFじゃXAMLとして同じだろう、と以前に購入していたXAMLプログラミング WPFアプリケーションの概要と開発を読みつつWPFの勉強を始めてしまった。

その本に出てきていたサンプルをSilverlightへ落とし込んでみるものの、本で使用していたVisualStudioが2005なのとVistaじゃないのが原因の為か、期待通りのUIや動きをしてくれず、、、
そのうち仕事が忙しくなり・・・・

結局、あれからほとんど進展は無かった。

焼け石に水でEclipseでXAMLで紹介したプラグインで、同様にあれこれやってみるものの、今日を迎えて時間切れ・・・

今日は、以下のテーマで課題発表をすることにした。
①SilverlightとJavaの連携(Webサービス連携 or EARファイルに突っ込みでOK!!)
②EclipseでWPF/XAML(マネージコードがJavaで書ける!!そのうちSilverlightも・・・)
③その他(Windows版Safariの話とか)

まぁ、クリエイティブさが主体のワークショップだったので、全然デザインっ気の無いシステマチックな課題発表があってもいいでしょう!!ってことで。
どうなることやら。。。。

Silverlight + Java(作成2日目)

課題作成2日目。

思い描いていたSilverlightとJavaアプリケーションの連携が、
どーにかこーにか実現できました。
と、言ってもかなりちょこざいな方法で。

本当はIIS上のSilverlightアプリから、Javaアプリケーションサーバー上のJavaアプリへ通信を行い、Javaアプリからの戻りをXMLデータでSilverlightアプリが受け取って、、、、、、ってやりたかったんだけど、全然うまく行かず。。。

しょうがないので、Javaアプリ側にSilverlightアプリを持っていって、
Javaアプリの元々のインターフェースをSilverlightアプリに差し替える形をチョイスしました。

Javaから戻されたXMLは、C#側ではLINQで処理してます。
LINQだとホント簡単にXMLの処理が出来るのでビックリ!!
実習で使ったサンプルをちょこちょこっとカスタマイズしただけで、うまくいってしまいました。

本来なら、Javaアプリ側をしっかりとしたWebサービスで再構築すると、VisualStudioにある「Web参照の追加」とかが利用でき、C#側からもっと簡単/スマートにロジックの記述ができるみたいです。
これがうまくいくと、IISをフロントサーバーとして、Javaアプリをバックエンドサーバーに配置することも可能になるんではないかと。

SOA?Webサービス?

どっちか分かんないけど、本来のスマートな配備が出来そうです。

まだ、4/15までは時間があるけど、カチカチのWebサービスの実装はちょっとキツイかも・・・
SilverlightアプリのUIを自分なりに磨こうかな。
DeepZoomとか、うまく使えるともっと良くなるんだけど、敷居が高いッス。

ちなみに、、、、、
Windows版のSafariでも問題なく表示できました。


参考URL
LINQ to XMLを使ってXMLのデータにアクセスする

カテゴリ

ウェブページ

  • /img
Powered by Movable Type 6.0.1

このアーカイブについて

このページには、過去に書かれた記事のうち.NETカテゴリに属しているものが含まれています。

次のカテゴリはC#です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。