データベース接続/切断の基本的概念

このQ&Aのポイント
  • データベース接続/切断の基本的概念について学びましょう。
  • データベース接続は、画面単位で行うのか、画面遷移単位で行うのかについて理解を深めましょう。
  • アドバイスを頂いてデータベース接続/切断のタイミングを理解しましょう。
回答を見る
  • ベストアンサー

データベース接続/切断の基本的概念が理解できてません

プログラミングをする上で初歩的な質問で大変申し訳ありません。 通信系プログラムの開発経験が多く、DBを扱うプログラミングは殆ど無いに等しいレベルです。 アドバイスを頂きたい点として大きく2点ありまして、以下の各システムでのDB接続のタイミングと切断のタイミングがよく理解できていません。 1.Windows系SYS(主にVC, VBによるInterfaceを持つもの)でのDB接続と切断するタイミング 2.WEB系SYS(主にASP, JSP)によるDB接続と切断するタイミング 例えば、画面Aから画面Bに遷移する場合、画面AでDBとの接続を確立したまま画面Bに遷移をするのか、それとも画面単位で接続と切断を行なうといった考え方が基本なのでしょうか? 内容がうまくまとめられなくお見苦しいところばかりですが、アドバイスお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

DBはセッションを多く開くとパフォーマンスが落ちますので、 DBに接続し、必要なデータをSQL文ですべて引っ張ったら一旦クローズ、 処理終了後にDBに再接続しSQLで更新をかけるというのが普通のやり方 です。処理中はDBを対象とせず、プログラム側に引っ張ったデータで 処理する・・・ということですね。 ただ、この方法を取ると、検索~更新間に検索したデータに更新を 掛けられるとDBの整合性が取れなくなりますので、DB上に何か フラグを立てるとか、プログラム上で整合性が取れる手段を考えます。 いずれにせよ、プログラム動作中にDBを開けっ放しにすることは、 プログラムが不正動作をした時にセッションをどう切るかという ややこしい問題が発生しますので、何か特別な理由がある場合以外は あまりやりません。

ll_VOXY_ll
質問者

お礼

画面単位で接続・切断を行なうことが基本ということを念頭に置き、 製造しようと思います。 仰られる通り、DB側データとプログラム上データの整合性に関する問題もありました。排他制御の実現方法についても今後学んでいきます。 解りやすいアドバイスありがとうございました。

関連するQ&A

  • データベースの切断について

    初めて質問させていただきます。 現在、C/S系のシステム開発で、プログラミング言語はJavaサーブレットを、データベースはDB2を使用してWeb画面を使用したシステム開発を行っています。 Javaサーブレットで、JDBC-ODBCを使用してデータベースへ接続するように、また切断の際もプログラムの中で切断できるようにプログラミングをしているのですが、Web画面のブラウザにある×マークで画面を閉じてもデータベースの接続は切断されるのでしょうか? 色んなサイトを探し回ったのですが、良い資料がありませんでした。 お分かりの方がいらしたら、是非ご教授お願い致します。

  • データベース接続について。

    Suclipt初心者です、わかりずらいかもしれませんが宜しくお願い致します。 今Sucliptにてデータベースより持ってきたデータを検索画面に表示し詳細ボタンを押したら詳細画面に移るというものを作っています。 JSP(検索画面)→Servlet(処理)→DAO(DB接続)→DB→DAO(DB接続)→JSP(検索画面)表示 ボタンを押すと→Servlet2(処理)→DAO→DB→JSP2(詳細画面、削除、更新)という流れです。 検索画面 例 社員番号  年齢  名前  備考  詳細 111     22  ああ  ああ  詳細←その列のボタンを押すと 222     33  いい  いい  詳細 333     44  うう  うう  詳細 詳細画面 社員番号  111   ←プライマリーキー 年齢    22 名前    ああ 備考    ああ 更新    削除  この様に表示される。 他のボタンも同様。 今の問題は 例えば検索画面にて for(int i= 0; i<projMemberList.length;i++){ ・・・ <td bgcolor="white"><%=projMemberList[i].getProjectCode() %><input type="hidden" name="prmProjectCode" value="<%=projMemberList[i].getProjectCode() %>">;<%=projMemberList[i].getProjNameDate() %></td> ・・・・ こんな感じで検索画面の社員番号をDBから表示してしているのですが、 ボタンを押したときに運ばれる情報は一番最初の111しか運ばれず、どのボタンを押しても111の詳細画面になってしまいます。 この場合222のボタンを押したときに222の情報を出すにはどうしたらいいでしょうか??? わかりずらくてすいません!! 宜しくお願い致します!!

  • struts:ActionFormの扱いについて

    いつもお世話になっております。 只今strutsの勉強中なのですが、 A.jspで入力させたものをB.jspで確認させ、 B.jsp画面でボタンが押されたらDBへ登録し完了画面C.jspを出す。 と言うようなものを作っております。 ActionFormはすべて同じものを使用しています。 遷移とDB登録は動きましたが、 問題なのはB.jspからDB登録処理を行うActionでFormがクリアーされてしまいます。 DB登録が完了するまでの間A.jspで入力された値を保持するような方法はないでしょうか? ご教授よろしくお願い致します。

    • ベストアンサー
    • Java
  • 二つのデータベースに同時接続は出来るか?

    こんにちは。 AというパソコンからBのパソコンとCのパソコンにあるデータベースに同時接続したいと考えております。 そういった事は可能なのでしょうか? 一つのデータベースに一回接続したら、ちゃんと切断するようにと思っていますが、Bのパソコンのデータベースに接続したまま、Cのパソコンのデータベースに接続することは出来るのでしょうか?もちろん、後に二つのデータベースの切断は行います。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 接続が切断されます。

    よろしくお願いいたします。 状況としてはローカルエリア接続中に次のページに飛ぼうとクリックすると、接続が切断されます。ここ最近発生し始めました。何か設定変更をしなければならないのでしょうか。それともウィルスでしょうか。 ご教授ください。 接続の内容は、ローカルエリア接続、ワイヤレス接続、ダイヤルアップ接続の三種類を使用していますので、ローカルエリア接続中に(ワイヤレス電源はOFF)切断されると、ダイヤルアップ接続の画面が表示されます。 Bフレッツマンションタイプ、 プロバイダーはぷらら、 ウィンドウズXPservicepack2導入済み、 パソコンはCF-R3です。 ウィルス対策ソフトはMcAfee for ぷららです。 よろしくお願いいたします。

  • struts + Jbossを使用した画面遷移について

    struts + Jbossを使用した開発を行っているものです。 以下のルートディレクトリが違う画面があったとします。 A) ルートディレクトリ:test1 jsp名:test1.jsp URL:http://localhost:8080/test1/test1.do B) ルートディレクトリ:test2 jsp名:test2.jsp URL:http://localhost:8080/test2/test2.do A)の画面からsubmitし、B)の画面へ遷移したいのです が、出来ません。ルートディレクトリが違う画面遷移 って可能なのでしょうか?

  • リンクの無効化/有効化 の切り替え

    いつもお世話になっております。 login.jsp A.jsp B.jsp C.jsp という画面があり、ログイン画面以外の画面上部に以下のようにリンクを張り付けております。 <a id="AH" href="A.jsp" onClick="Aheader()">A画面へ</a> <a id="BH" href="B.jsp" onClick="Bheader()">B画面へ</a> <a id="CH" href="C.jsp" onClick="Cheader()">C画面へ</a> ログイン画面でログインに成功すると、A.jspへ遷移します。 (1)A画面へ遷移した後、『A画面へ』のリンクを無効化 『B画面へ』をクリックすると、 (2)B.jspへ遷移し、『A画面へ』のリンクを有効化・『B画面へ』のリンクを無効化 (C画面も(2)と同じ仕組み) ---------Script--------- window.onload = function() { var element = document.getElementById("AH"); element.removeAttribute("href"); } function Aheader() { var element = document.getElementById("AH"); element.removeAttribute("href"); } function Bheader() { var element = document.getElementById("BH"); element.removeAttribute("href"); } function Cheader() { var element = document.getElementById("CH"); element.removeAttribute("href"); } ------------------------------------ これを実行すると、確かに無効化はされますが、有効化が出来ていない状態です。(hrefが削除されたままなので・・・) ですので、setAttribute を使えば出来そうだと考えたのですが、うまく動きませんでした。 ぜひ皆様の知恵をお借りしたく質問させていただきました。 よろしくお願いいたします。

  • PR2000NE切断

    PR200NEの管理画面より、 接続先設定画面の 接続設定の一番右にある切断のボタンを押して、 保存をかけて、PPP消灯。 切断だから、他のサイトも見れないだろうと、他のサイトを開いてみると・・・開ける PPPも点等している もう一度管理画面を確認すると接続になっている なぜ、一度切断になって、保存もかけているのに勝手に接続になっているのでしょうか? 切断の正しい操作方法を教えてください

  • LANで一台のPCだけが切断されます

    最近引越をしルーターを使い2台のPCをインターネットに接続しました。 AのPCは問題なくネットに接続されているのですが、もう一台のBのPCは頻繁に切断されます。 正確にはインターネットへの接続が切断されるわけではなく、(もうAのPCは繋がっているので)ルーターから切断されるようなのです。 一度切断されるとなにをしても復帰せず、ルーターへのアクセスもできなくなります。 再起動すると再び繋がるようになります。 1日切断されることなく繋がっていることもあれば、30分もしないうちに頻繁に切れたりすることもあり困っています。 設定を調べていじってみたり、FAQを見てまわったりして試行錯誤しているのですが直らず、原因がわかりません(>_<)ヽ よいアドバイスがもらえればと思い質問させていただきました。 よろしくお願いします。

  • 無線接続が頻繁に切断されます

    最近DynabookCX835LSとNECの無線LANカードWL54SCを購入し、無線接続 したのですが、頻繁に接続が切断します。しばらく待つと、接続できる ようになります。他の無線接続するPCは問題ありません。 同じPCにUSBアダプタのWL54TUを付けると、まったく問題無く接続 できるので、WL54SCかPCが原因かと思い、両方のサポートセンタに 相談しましたが、解決しません。 デバイスマネージャでは正常に認識されています。 試したことは以下のとおりです。 ・通信モードの変更(802.11aからb/g) ・チャンネル変更 ・セキュリティソフトのアンインストール ・WindowsXP SP2のファイアウォール停止 ・ドライバとユーティリティをアンインストールして  再度インストール ・PCのリカバリ ・他社の無線LANカードでも試しましたが、やはり無線が頻繁に切断  されます。 これ以上どうしたらいいのかわかりません。アドバイスお願いします。