【WPF】「Oracle.DataAccess」を利用してデータ操作(追加、更新、削除)してみる
おはようございます。
今回は前回に引き続き、Oracle.DataAccess を使ってデータの登録、更新、削除をしてみます。
前回の記事はこちら。
今回も、Entity Framework などは使わずに OracleCommand で実装していますので、サクッと書きます。
スポンサーリンク
プログラムの修正
登録更新フォーム表示時の処理
SubWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | publicSubWindow(CatModel SelectedCat) { InitializeComponent(); // データを取得 // 種別マスタを取得してコンボボックスに設定する using(varconn=newOracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")) { // データを取得 OracleCommand cmd=newOracleCommand("SELECT * FROM MSTKIND",conn); OracleDataAdapter da=newOracleDataAdapter(cmd); DataTable dt=newDataTable(); da.Fill(dt); // コンボボックスに値を設定 List<Kind>sources=newList<Kind>(); Kindk=newKind(); k.KindCd="00"; k.KindName="指定なし"; sources.Add(k); foreach(DataRow row indt.Rows) { k=newKind(); k.KindCd=row["KIND_CD"].ToString(); k.KindName=row["KIND_NAME"].ToString(); sources.Add(k); } // コンボボックスに設定 this.cmb_kind.ItemsSource=sources; this.cmb_kind.DisplayMemberPath="KindName"; if(SelectedCat==null) { // 追加処理の場合 this.Title="追加"; this.btn_add.Visibility=Visibility.Visible; this.btn_mod.Visibility=Visibility.Collapsed; } else { this.SelectedCat=SelectedCat; // 更新処理の場合 this.Title="更新"; this.btn_add.Visibility=Visibility.Collapsed; this.btn_mod.Visibility=Visibility.Visible; // 値の設定 this.txt_name.Text=SelectedCat.Name; foreach(ComboBoxItemiinthis.cmb_sex.Items) { if(i.Content.ToString().Trim()==SelectedCat.Sex.Trim()) { this.cmb_sex.SelectedItem=i; } } this.txt_age.Text=SelectedCat.Age.ToString(); foreach(Kind kind insources) { if(kind.KindCd==SelectedCat.Kind) { this.cmb_kind.SelectedItem=kind; break; } } this.txt_favorite.Text=SelectedCat.Favorite; } } } |
追加処理
SubWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | privatevoidbtn_add_Click(objectsender,RoutedEventArgse) { this.IsCancel=false; // データを追加する using(varconn=newOracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")) { conn.Open(); // シーケンス列としていないので、 // 最初に件数を取得して No を計算する OracleCommand cmd=newOracleCommand("SELECT COUNT(*) FROM TBLCAT",conn); decimalcnt=(decimal)cmd.ExecuteScalar(); // クエリ作成 Stringquery="INSERT INTO TBLCAT VALUES (" +++cnt +", '"+this.txt_name.Text+"'" +", '"+(this.cmb_sex.SelectedItem asComboBoxItem).Content+"'" +", "+this.txt_age.Text +", '"+(this.cmb_kind.SelectedItem asKind).KindCd+"'" +", '"+this.txt_favorite.Text+"')"; // クエリ実行 cmd=newOracleCommand(query,conn); cmd.ExecuteNonQuery(); conn.Close(); MessageBox.Show("データを追加しました。"); } this.Close(); } |
更新処理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | privatevoidbtn_mod_Click(objectsender,RoutedEventArgse) { this.IsCancel=false; // データを更新する using(varconn=newOracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")) { conn.Open(); // クエリ作成 Stringquery="UPDATE TBLCAT SET" +" NAME = '"+this.txt_name.Text+"'" +", SEX = '"+(this.cmb_sex.SelectedItem asComboBoxItem).Content+"'" +", AGE = "+this.txt_age.Text +", KIND_CD = '"+(this.cmb_kind.SelectedItem asKind).KindCd+"'" +", FAVORITE = '"+this.txt_favorite.Text+"' " +"WHERE NO = "+SelectedCat.No; // クエリ実行 OracleCommand cmd=newOracleCommand(query,conn); cmd.ExecuteNonQuery(); conn.Close(); MessageBox.Show("データを更新しました。"); } this.Close(); } |
削除処理
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | privatevoiddel_button_Click(objectsender,RoutedEventArgse) { logger.Info("削除ボタンクリック"); // データを削除する using(varconn=newOracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;")) { conn.Open(); intcheckCount=0; List<CatModel>list=this.dataGrid.ItemsSource asList<CatModel>; Stringquery; foreach(CatModel cat inlist) { if(cat.IsChecked) { checkCount++; // クエリ作成 query="DELETE FROM TBLCAT WHERE NO = "+cat.No; // クエリ実行 OracleCommand cmd=newOracleCommand(query,conn); cmd.ExecuteNonQuery(); } } conn.Close(); if(checkCount== 0) { MessageBox.Show("削除対象にチェックがされていません。"); return; } } // データ再検索 searchData(); MessageBox.Show("データを削除しました。"); } |
まとめ
そのうちまた違った方法で試してみたいと思いますが、
Oracleはとりあえずここまでです。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません