‫お帰りなさい｡
‫このビデオでは､ 残りのユーザーインターフェイスを追加し､ とりあえず1つの機能を追加して､
‫ZUSを削除する予定です｡
‫では､ そのようにしましょう｡
‫ご覧のように､ インターフェースは多かれ少なかれこのようになるはずで､ 私たちもほぼ同じように作っていくつもりです｡
‫同じ情報を下の方に入力すれば､ 同じように構築することができますが､ これはドラッグ＆ドロップで､
‫必要なSQLコードや一般的に必要なデータベースコードをすべてCシャープで実行できるようにするためのものです｡
‫ではまず､ ツールボックスを開いて､ 必要なものを確認しましょう｡
‫そして､ ボタンが必要です｡ ここにボタンをドラッグして､ 少し距離を置いて､ ちょうどこのようにします｡
‫そしてこのボタンには､ コンテンツの削除のようなことが書かれているはずです｡
‫では､ 実際にそのボタンをコピーしてみます｡
‫コピーペーストする｡
‫その横に引きずり込む｡
‫そして､ こちらは削除するのではなく､ もう削除するだけなので､ remove animalとしました｡
‫ちなみにこちらは､ delete contentではなくdelete zooです｡
‫そこで､ 動物園を削除し､ 動物を削除することにしました｡
‫では､ コピー＆ペーストしてください｡
‫ここに置いておきます｡
‫もう一度コピー＆ペーストしてください｡
‫実は､ 名前を変更する前にボタンを作成しているだけなんです｡
‫そして､ この中と､ この下の方にもう一つ｡
‫そして､ 最後の右上にあるのが､ この写真です｡
‫だから､ すべてをもう少し引きずったほうがいいのかもしれません｡
‫そんな感じ｡
‫だから､ 削除ボタンのスペースが十分にあり､ これはそのように行くことができるのです｡
‫わかりました｡
‫では､ 同様に､ これらを少し下にドラッグして､ リストが右側のものと同じ高さになるようにします｡
‫これは完璧なユーザーインターフェイスではなく､ ご存知のように他のトピックに関するものです｡
‫だから500は多すぎる｡
‫450なら問題ないでしょう｡
‫そして､ ここで､ 600を見てみましょう｡
‫それにしてもやりすぎだ｡
‫もしくは625｡
‫だから600はもう少しマシで､ 580くらいでいいんじゃないでしょうか｡
‫さて､ これですべてのボタンが揃いましたね｡
‫メインウインドウはいい感じです｡
‫タイトル名を変えることだってできる｡
‫動物園の経営者にしよう｡
‫さて､ 動物園のリストができました｡
‫動物園を削除する｡
‫あとは､ そのボタンをすべて変更すればいいのです｡
‫内容
‫だから､ あれは動物園を追加したんです｡
‫あれはアップデートズーです｡
‫実はあれ､ 上から順に並んでいないので､ 動物だったというのは更新されていないんです｡
‫ここをクリックするだけでいいんです｡
‫そして､ ご覧の通り､ すぐに正しいものを選んでくれているのです｡
‫だから､ これはアップデートズーであるべきなんです｡
‫このボタンはアップデートアニマルです｡
‫あれは削除動物動物です｡
‫そして､ ここにある1つは､ そうなる予定です｡
‫動物園に動物を追加する､ 動物園に動物を頭から入れる｡
‫そして今､ 私たちは終わったと思います｡
‫アップデートズー実はこのアップデートズーあれを変更すべきです｡
‫アップデート これ以上
‫さて､ これですべてのボタンが正常に動作するようになりました｡
‫真ん中にテキストボックスが必要です｡ このように位置を少し変えて､ 幅を広くすれば､
‫うまくいくはずです｡
‫テキストボックスのフォントサイズを変更して､ もう少し大きくすることもできます｡
‫でも､ それでいいはずです｡
‫やはり､ ここでの完璧主義や､ このUIでの完璧主義についてではありません｡
‫さて､ これで動物園の削除ボタンを追加することができました｡
‫そこで､ ボタンをダブルクリックします｡
‫そして､ このボタンのクリックイベントを取得します｡ 実は､ この名前は好きではありません｡
‫戻って､ 変えてみよう｡
‫このボタンがあり､ Button Clickというイベントを受け取ったので､ Delete Zoo､ あるいはUnderscore
‫Clickのような名前にしようと思います｡
‫これは､ これから作成する新しいイベントハンドラになります｡
‫その名前をコピーして､ 自分でメソッドを実装するんだ｡
‫プライベートボイド､ デリート､ ズー､ クリックです｡
‫そして､ ご存知のように､ 送信者であるオブジェクトと､ ルートされたイベントが必要です｡
‫ARG そして､ こちらも同様に｡
‫ここで､ ボタンが機能するかどうか､ メッセージボックスが表示されるかどうか､ 削除ゾーンがクリックされたかどうかなどを簡単にチェックすることができます｡
‫Delete Zooがクリックされたので､ 今度はボタンが正しく動作するかどうかだけ確認して実行してみましょう｡
‫わかりました｡
‫私たちがそうであること｡
‫これが私たちのインターフェイスです｡
‫もう万事順調のようです｡
‫では､ 動物園を削除してみましょう｡
‫Delete zooがクリックされた｡
‫完璧です｡
‫だから､ ボタンが効くんです｡
‫これで､ ここに正しく実装して行くことができます｡
‫これからすることは､ 私はよくなりたいので､ 新しいクエリを作成することです､ 私はそれが何かを削除することを望む｡
‫そこで､ どのテーブルから､ IDが等しい動物園のテーブルから､ 削除キーワードを使うことにします｡
‫そして､ 今度は動物園IDで動物園IDというものを使いますが､ これは私たちが作るべき独自の変数になります｡
‫そこで､ SQLパラメータで見たような新しいパラメータを作成する必要があります｡
‫そこで､ このSQL Command parameters, add with valueを叩きましたが､ このSQLのもう一つの処理方法を紹介します｡
‫そのため､ このアダプターを使用せずに
‫わかりました｡
‫というわけで､ 以下のように使うだけです｡
‫SQLコマンドは､ 新しいSQLコマンドになる予定です｡
‫そして､ ここで､ SQLコマンドはいくつかの情報を必要とします｡
‫そのため､ まずクエリが必要であり､ SQL接続が必要です｡
‫だから､ 何も目新しいことはない｡
‫それはもう､ ここまで来るとわかりますね｡
‫SQLコマンドクエリーとSQLコネクション､ そして､ このコネクションを起動するために､ SQLコネクションをオープンします｡
‫つまり､ SQLへの接続を開き､ このSQLコマンドにパラメータを追加しているのです｡
‫だから､ パラメータ・ドット・アドは価値を持つのです｡
‫そして､ この中で､ 一番上にあったアットズームIDを使いました｡
‫だから､ ここにあるのとまったく同じでなければならないのです｡
‫そして､ 単純に削除したいものを言うと､ 「List Zeus Dot selected.
‫選択された値は動物の名前ではなく､ 実際にはIDであるため､ このコードを実行することができます｡
‫そこでSQL Command Dot Execute Scalarはクエリを実行し､ 最初の行の最初のカラムとクエリが返す結果セットを返します｡
‫追加のカラムやロールは無視される｡
‫これはSQLコマンドを実行する最も簡単な方法であり､ SQL接続上でクエリを実行します｡
‫それだとオーバーヘッドが出ないしね｡
‫超シンプルな実行になりそうです｡
‫わかりました｡
‫そして､ もちろん､ SQL接続も閉じる必要があります｡
‫だから､ SQL Connection that close, 見ての通り､ 接続を開く必要があるからです｡
‫パラメータを追加してコードを実行した後､ 接続を閉じる必要があります｡ そうしないとエラーが発生する可能性があるからです｡
‫今､ 私が見せたいのは「ゼウス」です｡
‫動物園はたくさんありますし､ 動物もたくさんいます｡ そして､
‫その両方を合わせた関係表もあります｡
‫つまり､ 特定の動物園にいる動物ですが､ 動物園を削除した場合､ 異なる動物園の動物の項目すべてにも削除を適用したいのです｡
‫だから
‫もう少しわかりやすいように､ データを見て行きましょう｡
‫動物園のテーブルと動物園の動物のテーブルを見てみましょう｡
‫そこで､ 1の考えを持つNYを削除するとします｡
‫ここに動物園のIDワンを入れておいても仕方がない｡
‫この動物園ID1とこの動物園ID1のエントリーがあるわけです｡
‫つまりID1と2は､ 動物園に動物がいない､ 動物園がもう存在しないので､ それらのエントリーはもう必要ないのです｡
‫だからこそ､ その2つのエントリーを単純に削除すればいいのです｡
‫でも､ 手動でやる必要はないんです｡
‫コードで応用することで
‫実際にデータテーブルを調整することもできますし､ 調整することでかなりの効果が期待できます｡
‫だから､ オープンテーブルの定義｡
‫それがどうした？
‫開き直る｡
‫そして､ 最後に付け加えなければならないのは､ 削除カスケードについてです｡
‫そうですね｡
‫そして､ 私はここで両方のプロにそうしています｡
‫だから､ 私たちの動物のための制約､ インキのための制約､ そしてインキのための私たちの動物園のための制約の両方について｡
‫これは､ 対応するエントリーがない場合､ つまり､ 私たちが接続している動物園の対応するIDがない場合に､
‫このエントリーを単純に削除するものです｡
‫例えば､ 動物園を消してしまうと､ その動物園にいる動物は全部いらなくなります｡
‫動物そのものではなく､ 動物園と動物の相関関係､ 関係性が必要なのです｡
‫だから､ それらも取り除くことができるのです｡
‫そして､ ここにある2つのエントリーは､ そういうものなのです｡
‫この削除は､ Cascadeで実行することができますので､ コードを実行する前に､ 実際にエラーが発生する可能性があることを確認するために､
‫更新する必要があります｡
‫というわけで､ これから単純にコードを実行します｡
‫起動させて､ 何かを削除しようとすると､ ここに該当するエラーが表示されますね｡
‫というわけで､ カイラを削除します｡
‫そして､ delete文が参照制約と衝突したと書かれています｡
‫Zoo f kデータベーステーブルzooと列zoo IDで発生した競合は､ ステートメントが終了しています｡
‫だから､ このようなエラーが発生するのですが､ まあ､ エラーを探せば､ これはまさにそれが欠けているからだとわかります｡
‫削除カスケードで､ それはまだ更新していないからです｡
‫それでは､ 新しいデザインで､ 新しく更新されたテーブル制約でデータベースを更新してみましょう｡
‫そして､ それができて､ アップデートが完了し､ 成功すれば､ それは素晴らしいことです｡
‫もう一度起動すれば､ 今度はChiroを削除することが有効であることがわかります｡
‫そして､ 今度はエラーが出なくなった｡
‫では､ なぜカイロはまだそこにいるのだろうか｡
‫そしてそれは､ このリストを表示したり､ このリストを更新したりするメソッドをキャストしたり､ 呼び出したりしていないことと関係があります｡
‫では､ コードに戻りましょう｡ 実際にここにあります｡
‫このコードで､ すべての動物を表示する､ あるいはすべての動物園を表示する必要があります｡
‫動物園を見せる｡
‫さあ､ もう一度始めましょう｡
‫そして､ キョロがすでになくなっていたことがわかるでしょう｡
‫だから､ もうないんです｡
‫ご覧のように､ カイロはそれを削除して行っています｡
‫では､ ベルリンを削除してみましょう｡
‫ブームで､ SQLエラーが発生しました｡
‫しかし､ それは消えてしまった｡
‫このように､ 何かを削除したためにエラーが発生しました｡ このエラーは､ ショーの動物園や関連する動物たちが､
‫例外を呼び出すここのどこかで適用されましたね｡
‫このキャッチ例外が発生し､ このエラーを見せられたのです｡
‫でも､ 今はかなり前進していますね｡
‫では､ これからこのコードを更新して､ エラーに遭遇してもプログラムが停止しないようにします｡
‫だから､ トライキャッチを作って､ 最後に
‫ブロックです｡
‫だから､ まだそれほど頻繁にfinallyを使ってはいないのですが､ 今回は本当に意味がありますね｡
‫では､ tryで実行したいコードは何でしょうか？
‫ブロック まあ､ 実行するまでのすべてがそうですね｡
‫だから､ すべてがうまくいかなくなる可能性があるわけです｡
‫ここで接続を終了する場合｡
‫そして最後に､ それが正しい方法です｡ ここで開いたとしても､ 一度は閉じる必要があり､ 最終的には閉じるべきです｡
‫うまくいったとしても､ うまくいかなかったとしても､ 単に閉じて確認したいだけなのですから｡
‫すべて順調です｡
‫同じように私たちを示しているので､ うまくいってもいかなくても問題ないのです｡
‫動物園方式」と呼ぶだけで､ 私たちのテーブルにある動物園がよく表示されます｡
‫そして今度は､ ただエラーを投げるのではなく､ ここで例外名を使用することにします｡
‫Eと名付け､ メッセージボックスに表示することにします｡
‫メッセージボックスが表示され､ これがeドットとなり､ このような文字列が表示されます｡
‫わかりました｡
‫さて､ こちらは､ Xと呼んでもいいかもしれませんね｡
‫その方がいいのかもしれませんね｡
‫つまり､ ルートイベントはすでにEと呼ばれているので､ このイベントをx OCと呼ぶべきという問題です｡
‫では､ もう一度起動して､ リストからコンポーネントを削除できるかどうか見てみましょう｡
‫そして､ 右はあまりないですね｡
‫だから､ 東京を消そう｡
‫このように､ var char for animal in a join はパラメータ zone was が供給されないことを想定しており､
‫実際には全く役に立たないエラーとなります｡
‫というのも､ ここでエラーが発生しますが､ まだ動作しているので､ とりあえず無視することにします｡
‫私たちのプログラムはまだ動いていて､ あるべき姿をしています｡
‫つまり､ このコードがまだ実行されているのはここだけで､ 関連する動物を表示します｡
‫そしてこの場合､ 何も入っていないんです｡
‫そうですね｡
‫そのため､ 関連する動物を表示すべきものが選択されていないのです｡
‫だから､ ここでこの例外を解消しておく｡
‫ついでに言うと
‫そうですね｡
‫他は問題ないはずです｡
‫そうですか､ では｡
‫ええ､ ほとんどそうですね｡
‫これで､ アプリケーションからコンポーネントを削除する方法がわかりました｡ 次のビデオでは､ リストにものを追加していきます｡
‫では､ 現地でお会いしましょう｡