以前、
⇒【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の記事に極力合わせます。
作成するWindowsFormはこんな感じになります。
ComboBox:1コ
DataGridView:1コ
Button:2コ
Entity Data Modelはこんな感じで進めていきます。
「データベースから生成」を選択。
「新しい接続」ボタンをクリック。
下記画面のように選択します。
接続先のサーバーはとりあえずlocalhost。
ユーザーはdb2admin。
接続先データベースはSAMPLEに変更。
設定が終わった「テスト接続」をクリック。
問題が無ければ、接続テスト完了。
「次へ」ボタンを押すとDBと接続を開始します。
接続中・・・・
データベースオブジェクトを選択。
Entityモデルが生成されました。
で、こっからはソースコードの補足。
■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); } } |
この実装で、画面に何が出てくるかはお楽しみです♪