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

わんくま同盟

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

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


(過去ログ 51 を表示中)
■28339 / )  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で公開するコードならなおさらです)


返信 編集キー/


管理者用

- Child Tree -