- 締切済み
ADODBでサーバー・DBに接続するとは・・・
初めまして、専門学校で技術の勉強をしている女子です。 ACCESSを使ってVBAでの課題をしている途中で、色々疑問が湧き、調べても解決できなくて、質問させてください(課題とは関係ないので課題を作りたいというわけではないですよ^^;)。 アクセスでカレントプロジェクトをADODBで接続して自データ(テーブル)を持ってくるのは、書籍などでもありますし、規定のコードを書いて実現できるのですが、よく聞く三層クライアントサーバーシステム(基本情報の勉強で知りました)では 【クライアント → サーバー → DB】 のようになっていると思います。例えばSQLSeverへの接続をするには Set cn = New ADODB.Connection CN.Provider = "SQLOLEDB" CN.ConnectionString = "Data Source=111.199.---.+++;" & '←ここなんですが "Initial Catalog=***;" & "User ID=***" & "Password=***" のように接続するようなのですが、どう解釈すればいいんだろう?と思っています。 ・疑問:これだとクライアントからSQLServerへ接続するIPアドレスしか指定していないので、サーバーOSに辿り着かないのでは・・?それともIISが自動でしてくれるのでしょうか? ・疑問:ODBCドライバという接続のしかたも調べましたが、やっぱり"Data Source="の指定を変えるだけで疑問はそのまま残ってしまいます。 自分なりに考えた事を書きたいと思います。 以下のことは私が勘違いや思い込みをしているのではないかと思っています。 なので正してくれる回答があればうれしいです。(ずうずうしくてスミマセン・・) ・何層だろうとサーバOSが、指定されているIPとDBを自動で判断し、このコードで接続できる。サーバOSの設定はDBAに詳しくなろう。 ・ではなくて、やっぱりサーバOSへの接続を記述して確立してから、改めてDBへの接続を記述しないとだめ。 ・VBAの記述はこれでよし、でもSQLSeverの設定でクライアントの許可をすればいいんだよ。 ・同じくVBAはこれでよい、でもサーバOSの設定でクライアントの許可を・・。 など考えています。何か根本的に理解していないことがありそうで、、また色々調べて本やネットをたくさん見ているために情報が整理できずに、間違った考えになっているのでは。と苦しんでいます。 実は先生や周りの友人に聞いても「たぶんそれでいいんじゃない?」とあやふやなんです(ーー;) そして私自身もIISやサーバOS、DBサーバの理解が足りていない事は実感しています。 現役でコードを書いている方や設定をされているかたにお話しを聞きたくて質問してみました。 面倒でなければ簡単なコードを記述して頂けるとありがたいです! ちなみに今はマイクロソフト群で勉強していますが、これをクリアしたらこんどはオラクルやMYSQLなどへの接続もしてみたいと思っています(学校に環境があるので^^)。 VISUAL STUDIOを使って(コードはVBですが)DB接続してみても、GUIで簡単にできすぎて、余計に理解ができませんでした。 長くなりましてすみませんでした。 なにかアドバイスや参考になることでも構いませんので、よろしくお願いします。 どんなに長い回答でも必ず読ませて頂きます!むしろ歓迎です!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
アプリケーションには様々な形態があります。 Webアプリケーションの場合 (1)クライアントが要求をサーバに送る。 (2)サーバはクライアントに応答を返す。 ここで、サーバがDBを操作する必要があり、 しかも同じマシンでない場合はDBサーバへ 接続して操作します。 つまり、クライアント→サーバ→DBサーバ という感覚です。 クライアント/サーバの場合 クライアントは必要な資源をサーバから取得 します。情報はサーバから供給されますが、 実行するのはクライアント側プロセスです。 例えばAccessでDBサーバ上のテーブルを 参照するなどがその例で、以下の感じです。 クライアント→DBサーバ いずれにしても、DBを扱う場合はDBサーバに アクセスする訳です。 >何層だろうとサーバOSが、指定されているIPとDBを自動で判断し 違います。自動で判断できるOSやコンテナは ありません。必ず相手先アドレス、サービス名、 ユーザID、パスワードなどを記録しています。 例え、WebサーバとDBサーバが同一マシン だとしても指定が必要です。 >SQLSeverの設定でクライアントの許可をすればいいんだよ 「クライアントの許可」って何でしょう? 先程も言いましたけど、「???→DBサーバ」の 左側は接続可能であれば何でも良いのです。 実際の業務ではプログラム中に定数で接続先を 定義することは絶対にありません。 何故なら、環境が変わって、DBサーバのアドレスや サービス名が変わることを想定しなければならない からです。特に開発中のテストDBと本番のDBは 構成は同じでもIPアドレスは違います。 テストの完了したプログラムは1文字(例えコメント) でも修正できません。 Visual Studio では確かConfigファイルに接続文用の 文字列が記録されてた記憶があります。 プログラムではここの内容を読み出して接続している はずで、これならConfigを変更するだけで、接続先を 変えられます。
- layy
- ベストアンサー率23% (292/1222)
参考で。 業務では、本番環境とテスト環境とあるので、接続先を変えるその都度『ここ』を修正してコンパイルというのは非効率。なのでINIファイルを用意して変数で記述した切替をよくみます。ODBCも同じ感覚。プログラム本体を修正しなくてもいい使い方を考えるのも応用の1つです。