C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ASP(VBScript)のデータベース問い合わせについて


(過去ログ 51 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■28334 / inTopicNo.1)  ASP(VBScript)のデータベース問い合わせについて
  
□投稿者/ たま (1回)-(2008/11/24(Mon) 18:15:50)

分類:[VBScript] 

こんにちわ。

いつも参考にさせて頂いています。

とても初歩的な質問となりますがご教示下さい。

昨日、SQL Serverへ接続してデータベースの問い合わせを行っていたのですが記述によって表示件数が変わってしまいます。

以下、コードを記述致します。

(1)
Set db = Server.CreateObject("ADODB.Connection")
db.Open "WEB","web","web"
Set cn = Server.CreateObject("ADODB.Recordset")

sql = "SELECT * FROM data where num = '" & ip_add & "'"
Set cn = db.Execute(sql)

(2)
Set db = Server.CreateObject("ADODB.Connection")
db.open "WEB","web","web"

sql = "SELECT * FROM data where num = '" & ip_add & "'"
Set cn = Server.CreateObject("ADODB.Recordset")
cn.Open sql, db,3,3

(1)で問い合わせを行ってフォームに表示させると項目が50個あるのに対して18個しか表示されませんでした。
違う検索キーでも試してみました。
しかし、(2)で問い合わせを行ってフォームに表示させると50個全ての項目がしっかり表示されました。

(1)と(2)の違いってなんなのでしょうか?

自分としてはいつも(1)を使っているので不安になります。。。

どうぞよろしくお願いいたします。
引用返信 編集キー/
■28339 / inTopicNo.2)  Re[1]: ASP(VBScript)のデータベース問い合わせについて
□投稿者/ たくボン (70回)-(2008/11/24(Mon) 22:50:12)
No28334 (たま さん) に返信
> 昨日、SQL Serverへ接続してデータベースの問い合わせを行っていたのですが記述によって表示件数が変わってしまいます。
> (1)
> Set cn = Server.CreateObject("ADODB.Recordset")
> sql = "SELECT * FROM data where num = '" & ip_add & "'"
> Set cn = db.Execute(sql)
>
> (2)
> sql = "SELECT * FROM data where num = '" & ip_add & "'"
> Set cn = Server.CreateObject("ADODB.Recordset")
> cn.Open sql, db,3,3
>
> (1)と(2)の違いってなんなのでしょうか?

まず整理していきましょう。
(1)の場合は、Set cn = db.Execute(sql)で取得、(2)の場合はcn.Open sql, db,3,3でレコードセットを作成していますね。
上記の(2)の場合は、CursorTypeが3に指定されているのでCursorTypeEnum.adOpenStaticになっています。つまりレコードの静的コピーが結果セットに返却されます。
LockTypeも3なのでLockTypeEnum.adLockOptimisticなのでオプティミスティックなロックになっています。
よって(1)と(2)はまったく別物です。 詳しくはADOのマニュアルを参照してください。

http://msdn.microsoft.com/ja-jp/library/cc364218.aspx


おそらくどこかからソースをコピーして作成されたんだと思いますが、変数cnは通常コネクションの変数として使われている方が多いと思うので、Recordsetの変数名としては使用しない方がいいかも。

小さな指摘ですがとても重要なことです。普段から適切な変数名を意識してコーディングするように心がけてください。(特にWebで公開するコードならなおさらです)


引用返信 編集キー/
■28402 / inTopicNo.3)  Re[2]: ASP(VBScript)のデータベース問い合わせについて
□投稿者/ たま (3回)-(2008/11/25(Tue) 21:36:43)
No28339 (たくボン さん) に返信

たくボン さま
ありがとうございます。

> よって(1)と(2)はまったく別物です。 詳しくはADOのマニュアルを参照してください。

まだまだ勉強不足で分からない言葉もありますので1つずつ調べて学んで
いきたいと思います。

>
> 変数cnは通常コネクションの変数として使われている方が多いと思うので、Recordsetの変数名としては使用しない方がいいかも。
>
> 小さな指摘ですがとても重要なことです。普段から適切な変数名を意識してコーディングするように心がけてください。(特にWebで公開するコードならなおさらです)

気をつけるように致します。
むしろ細かいこところまでご教示頂き感謝しております。

すっきり致しました。

本当にありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -