• ベストアンサー

ADOの中身は何でしょうか?

最近ADOという言葉を知ったのですが、理解が出来ていません。 ADOを土台としたとき、その上にDBとプログラミングがある ということでしょうか? ADOを停止して再開するということはどういうことでしょうか? DBの再起動と何が違うのでしょうか?

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

ADOとは、データベースそのものではなく、「データベースにアクセスするための仕組みの一つ」です。 もともどデータベースシステムの種類は山ほどありますし、それぞれのデータベースシステムがデータベースにアクセスするための仕組みを提供していたのですが、それを直接使うと手順が複雑になるため、もっと簡単に扱えるようにカプセル化したものがADOです。 (今では古くなってしまったですが、OBDCやRDO、DAOなどと比べると相対的に後で登場したものです) ADOは「ActiveX Data Objects」の略なので、実体はConnection, Command, Recordsetと言ったオブジェクトの集合です。 オブジェクトを宣言してあげれば、あとは adoConnection.Open "接続文字列" と書くだけでデータベースに接続できます。 後の手順はオラクルでもSQL ServerでもAccessでもテキストファイルでも同じように書ける点がメリットです。 だから「ADOというデータベースにアクセスする」のではなく「ADOを使ってデータベースにアクセスする」と理解してください。 必然的に「ADOを停止・再開」という言葉がおかしいことに気付いていただけるだろうと思います。 >ADOを土台としたとき、その上にDBとプログラミングがある の意味はよくわかりませんが、データベースに関する限りは「ADOを使ってデータを取得する手順」を記述することがプログラミングであり、それを実行したときにADOという仕組みがアクセスするのがデータベースだと言えるでしょう。

GreenVVV
質問者

お礼

御礼が遅くなりました。 ご丁寧に説明していただきまして、どうもありがとうございました。 いろいろと混同していましたが、 すっきりいたしました。

関連するQ&A

  • ADO接続の共有

    ACCESS2007をフロントにしてDBをSQL-Server2005Expressにして開発を 行おうとしています。 できる限りネットワークの負荷を減らそうと、ADO接続/ADOレコードセットと フォーム連結で開発したいのですが、ネットで検索するとADO接続を各画面で 行わなければならないような記述しか見あたりません。  ・検索キーワード:ADO 接続 共有 できれば、ADO接続はプログラム起動時1回で、DBデータを表示する 画面等を開く場合は、起動時に取得した接続を使い回したいのですが、 当該方法が記載されたいるようなURL等をご教示願えないでしょうか?  ・他mdbのテーブルをリンクテーブルとして使用したいため、   AccessProject(.adp)の使用は断念しました。 上記よろしくお願いします。

  • ADO JET ODBC経由 理解できません・・・

    ADO JET ODBC経由・・・etc データベースを最近作成するにあたってよく聞く言葉なのですが、 いまいち理解出来ません。 分かりやすく解説して頂けないでしょうか??

  • ExcelVBAからADOで複数のDBへの接続

    いつもお世話になっています。 ExcelVBAの初心者ですが、Oracle、Access、ExcelデータへADO接続してデータを表示するものをExcelかACCESSで作ろうとしています。 それぞれのデータは社内ネットワークのバラバラ位置にあるのですが、 ADOとは下記のイメージでいいでしょうか? 1.インポートする手間がない。 2.それぞれのDBが更新されたら、その前までのデータで表示される 3.3つのDBを同時に接続しても問題はない・・・ まだイメージが固まっていないのですが、上3つが気になっています。 また自宅でネットワーク環境になくても練習できるものでしょうか?

  • Access のADOのrecordset

    Access VBA でのrecordset はDAOとADOがあります。 DAOの場合recordsetからrecordsetを作成できました。 つまり、日本からある県を選び出し、その中から10代の人を選び出せました。 ところが、ADOの場合それができません。ある県の10代の人を選び出そうとしても、 結果的に全日本の10代の人となってしまいます。 例として RD1.Filter = "購入日># " & DateAdd("yyyy", -1, Date) & "#" Set RD2 = RD1.OpenRecordset この「RD2」という新しいrecordsetができます。 RD2は購入日が今日から1年前の1つのファイルとしてsetされます。 この中から山田さんの売り上げを集計することができます。 ところが、ADOの場合下記のように書いて、 str = RS!ブランド RS.Filter = ("ブランド = " & "'" & str & "'") RS.MoveFirst str = RS!名前 RS.Filter = ("名前 = " & "'" & str & "'") 上はある雑貨店のDBですが、あるブランドを抽出します。次にその中から、ある顧客の売り上げを集計する場合、結局全ブランドの”田中さん”になってしまいます。 要は、最初にブランドで抽出した意味がないのです、 ADOでDAOのようにrecordsetからrecordsetを作る方法はないのでしょうか? ADOの書き換えるのはMSのQSLserverがDAOの対応してないからです。

  • 非接続型と接続型について

    DBがらみの話で、非接続型と接続型という言葉がでてくることがあります。具体的に何が違うのでしょうか?言葉の意味がわかりません。ADOと何か関係があるのでしょうか。

  • この仕様を実現するには、VBAとADOで充分なのでしょうか?足りませんか。

    当方、SEを1年半経験して現在WEBサイト制作に携わっております。 以下の仕様を実現するため、足りない知識を補強しようとしております。 そこで、「○○の知識が必要」、さらに可能でしたらオススメの書籍など アドバイス頂ければ幸いです。 【仕様】 データベース(仮にMySQLとします)に、 テーブルAとBがあります。 Aは会員情報テーブルで、名前やメールアドレス、そして属性という項目を持っているとします。 (属性は仮に1~3という3種の数値だとします。) Bは、属性別の「メッセージ」を持つテーブルとします。 Aと連携し、たとえば仮に山田さんが属性1だとすると、 ------------- 山田様 ここに属性1のメッセージ ------------- というように、最後はエクセルに出力し、 印刷まで行うシステムを作りたいと考えています。 上記のようにエクセルとDBが連携するには、 VBAとADOに関して書いてある本から学べば足りるのでしょうか。 (現在、こういった判断が全くできないほどの知識量で困っております。  また、大きな書店で何冊か本を見ていましたが、mdbという拡張子の  データベースファイル?にアクセスする例しか載っておらす、  本当にこれで任意の外部DBにつなげるのか疑問に思っております。) ちなみに私の現状は、 ・SQL文は書けます。 ・VBもプログラミング経験が1年ほどあります。厳密にはVBAは未経験ですが。 ・必要な本を買えば、VBAなどのコードを理解することはできると思いますが、  今回の案件をゼロから自分で書くのは不可能な状況です。  (それで、本を探しております。似たような例が載っている本を読めば、  理解し、できる自信はあります。) 以上ですが、不足がありましたら申し訳ございません、 コメントにて随時補足させて頂きたいと思います。 どうぞ宜しくお願い致します。

  • Access起動中にエクセルからADOでデータの更新ができない

    こんばんは。原因がわからないので質問させてください。 SQLサーバーのデータをAccessのmdbへリンクテーブルしています。 (SQLサーバー → Access) 全て一つのパソコンで行なっています。(LANには接続していません) Accessのmdbファイルを起動している時に ExcelからSQLサーバーのAccessにリンクしている上記のテーブルへ ADOを使ってデータを追加しています。 (Excel → Access)  しかし、「rs.Update」の部分で  「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」 となってしまいます。 なので、一度mdbファイルを落として、コードを再開すると通るので ADOでExcel → Accessにデータを追加し終わってから再度mdbファイルを立ち上げています。 また同じ状態(mdbファイルを起動)で Excel → SQLサーバー へ更新クエリをしようとすると「時間切れになりました」となります。 (こちらもmdbファイルを落とすと再開できます。) いちいちmdbファイルを落とすのめんどうなのですが 回避する方法はありますか? cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\Documents.test.mdb" rs.Open "テーブル", cn, adOpenStatic, adLockPessimistic rs("フィールド") = True rs.Update '保存 rs.Close: Set rs = Nothing というコードを書いています。 Accessを落とせば正常に動きます。 ご教授よろしくお願い致します。

  • 休止から再開するとき、ディスプレイドライバが停止

    最近、再開するたびに、’ディスプレイドライバの応答の停止’と表示されます。 再起動すると正常にもどりますが、どうして再開ができなくなったのかわかりません。 正常な状態に戻す方法がありましたら、教えてください。 初心者ですが、よろしくお願いします。

  • VB2008 Expressで、Excelファイルへのアクセスについて

    VB2008 Expressで、Excelファイルへのアクセスについて質問します。 プログラミングが本業ではありませんが、社内で使用するツールとして、VB6+ADOで、AccessのMDBを使ったDBソフトを作った経験はあります。 そろそろ、.netを勉強しようと思うのですが、手元にあるのは、VB2008のExpressバージョンです。 これを使って、ExcelのxlsをDBのように扱うことは可能なのでしょうか? 「DBのように」というのは、xlsファイルをレコードセットに格納し、条件にあったレコードを抽出することを想定しています。 同様なことが、ExcelVBAで可能ならば、それでもいいのですが。 よろしくお願いします。

  • Oracle SPFILE復元について

    お世話になります。 実はsga_max_sizeを変更するとDBが起動しなくなりました。 そのため、元に戻そうと考えました。 変更する前にDBを停止しSPFILEをバックアップしていましたので DB停止後、SPFILEをコピーしました。 するとDBは起動し問題なく動作しているようにみえています。 この復元方法は正しいのでしょうか?また問題はないでしょうか? PFILEからSPFILEを作成しなおす方法もあると思いますが・・・