レコードセットをよりよく正しく理解したい

解決


sag  2005-09-09 20:22:00  No: 125091

こちらで質問してよろしいものか悩みましたが
もし間違っていたらご容赦ください。

いまさらながらVB6で
SQL ServerをADOを用いて操作しようと考えています。
恥ずかしながらVB6は今回初めて使います。

接続の確立はできました。
接続文字列とかいうヤツも、
SQL ServerのEnterpriseManagerで
新規登録するときに設定するアレだなーと
とりあえず今のトコロそう解釈しています。

openメソッドや
コネクションexecute
などの操作で、
とりあえず今やりたいことはできているのですが、
例えばその過程で作成される
レコードセットの『中身』や『仕組み』が
よく理解できておらず、
それゆえうまくイメージできず
プログラムは動いてはいるものの
『正しく』動作しているのかが不安です。
結果的に上手く行っているだけなのか…

例えば、
SQL Serverのクエリアナライザで
SQL文をガシガシ書くときなどは、
やらせたことはもちろん、
その結果がメッセージとして表示されたり、
あるいは結果としてのデータがマトリクスで表示されますので
すごくすっきりするのですが、
レコードセットオブジェクトのメソッドを使うときなどは
なんかモヤモヤ感が残ります。

要するに
VBにおけるオブジェクトやメソッドに関する理解が
足りてないのだろうと思うのですが、
ヘルプや文献など読んでも上手くイメージできません。

長々と書いてしまいましたが、
有識者の皆様のご意見をうかがいたく
よろしくお願いいたします。


特攻隊長まるるう  2005-09-09 20:45:48  No: 125092

クエリアナライザでも内部処理は把握してないと思うけどなぁ(^^;)
[VB6.0]でクエリアナライザもどきを作ってみればいいんでないの?

データベースとの接続画面は…どうしよう(汗)…簡易的に接続文字列を
入力できる画面とかにして、
入力された接続文字列でデータベースとのコネクションを開いて、
この時点でカタログ名を取ってくる事ができるのかどうかはやった事
ないのでパスして、カタログ名固定でテーブル名をSQL文で検索して、
テーブル構造をツリービューに表示して、
テーブル選択してテキストボックスに入力したSQL文を実行して
結果を DataGrid とかに表示するとか。


sag  2005-09-09 22:58:08  No: 125093

回答ありがとうございます。

>クエリアナライザでも内部処理は把握してないと思うけどなぁ(^^;)
そうですね。そう思います。
今はSQLプロファイラを併用して処理を眺めています。
そういうレベルでの質問でした。

しかしながら大変勉強になる回答をいただき
ありがたく思っております。

たとえば、
クエリアナライザなどでSQL文を投げると
メッセージなり処理結果なりが(処理時間にもよりますが)
すぐ返って来ますよね?
でも、VBでDBを操作しようとするとき、
レコードセット上でコチャコチャやって
メソッドが実行されて初めてDBが更新されたりするワケですよね?
(↑この辺の解釈も間違ってましたらご指摘いただきたいと思います)
その時間差といいますか…
命令→処理・実行→回答(≒結果の反映)のタイミングといいますか…
なんかモヤモヤするんです。
インタフェイス(?)上、そんなモンだと思うしか無いんでしょうか?
いや、この解釈が間違っていれば改めなければと思うのです。

コーディングというより、
概念的に正しく理解したいと強く願うしだいです。


特攻隊長まるるう  2005-09-10 00:06:38  No: 125094

>クエリアナライザなどでSQL文を投げると
>メッセージなり処理結果なりが(処理時間にもよりますが)
>すぐ返って来ますよね?
>でも、VBでDBを操作しようとするとき、
>レコードセット上でコチャコチャやって
>メソッドが実行されて初めてDBが更新されたりするワケですよね?
いえ、それだけではなく、直接 Update 文や Insert 文を投げて
データベースに処理させる事もできます。
[INSERT INTO と AddNew どちらが速い?]
http://homepage2.nifty.com/inform/vbdb/addnew.htm

レコードセット上でコチャコチャやって…ってのも
Enterprise Manager で結果として表示されているセルの値を
直接編集する操作と同じように思えます。

…ですから、一度もどきを作ってみて下さい。
クエリアナライザはアプリケーションです。[VB6.0]は内部の
プログラムです。それを比較してる時点で概念とか言われても…。
[VB6.0]で作ったアプリケーション(クエリアナライザもどき)と
比べてみて下さい。


sag  2005-09-10 06:15:25  No: 125095

>クエリアナライザはアプリケーションです。
>[VB6.0]は内部のプログラムです。
ですね。そこでした。

>いえ、それだけではなく、直接 Update 文や Insert 文を投げて
>データベースに処理させる事もできます。
はい、確かに、
例えば
コネクション.execute
で直接投げることもできますね。

>レコードセット上でコチャコチャやって…ってのも
>Enterprise Manager で結果として表示されているセルの値を
>直接編集する操作と同じように思えます。
はい、レコードセットを用いる場合のイメージって
それで正しいのかと考えてました。

いろいろ書いては走らせてみてはいたものの
初めての言語にはじめての環境で不安も多く
せっかくだからしっかり理解したいと考えての書き込みでした。

すっきりしました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加