1. ホーム
  2. Web プログラミング
  3. ASP プログラミング
  4. アプリケーションのヒント

ASP RecordSet OpenとConnection.Executeのいくつかの違いと共有すべき詳細な内容

2022-01-16 02:38:06

rs.open sql,conn: sqlがdelete,update,insertの場合、閉じたレコードセットを返すので、rs.closeを使用する過程でファイルの最後にrs.closeを書かないでください。
レコードセットを閉じるために最後の作品:途中で複数のレコードセットrs1.open sql1,connを来ることができますrs.close rs1.close
conn.execute(sql)SQLが削除、更新、挿入された場合、閉じたレコードセットを返します、使用の過程でファイルの最後にrs.closeに来ることはありませんし、rs.closeを書き込みます。
中間は、複数のレコードセットrs1.open sql1,connに来ることができる、閉じたレコードセットの最後の作品:rs.close rs1.close。
sqlがupdate,insert,deleteであれば、conn.execute(sql)を使うか、括弧を省くことができます conn.execute sql {を使用します。
SQLがselect文の場合は、set rs=conn.execute(sql) 括弧を使用しなければならず、省略することはできません:これはvbscriptの性質上、戻り値
戻り値 {{br/br} のある呼び出しは括弧で囲む必要がありますが、戻り値のない呼び出しは括弧なしでもかまいません。

注: rs.open sql,conn または conn.execute(sql) [SQLは delete,update,insert] のいずれを実行しても、閉じたレコード集合を返します。
つまり,sqlがinsert, update, delete文の場合,set rs=conn.execute(sql)のRSは意味をなさないということです。

1.conn.execute

sql="select * from admin where username='xiaozhu'"
set rs=conn.execute(sql)
Automatically close the recordset after execution
Finally, you just need to close the connection
conn.close
set conn=nothing

2.rs.open

set rs=server.createobject("adodb.recordset")
sql="select * from admin where username='xiaozhu'"
rs.open sql,conn,1,1
You can set some parameters yourself, i.e. locking and cursor movement
Finally to close the recordset and the connection
rs.close
set rs=nothing
conn.close
set conn=nothing

3.コマンド実行

sql="select * from admin where username='xiaozhu'"
set rs=command.execute(sql)

*****************************************************************************
1.

set rs=conn.execute("if select statement") get rs.recordcount=-1
rs.open sql,conn("sql for select statement") rs.recordcountを通常のレコード数として取得する。

2.

rs.open はデータベースを開くこと conn.execute は SQL コマンドを実行すること
set rs=conn.execute(insert,update,delete) 閉じたレコード群を返す。
set rs=conn.execute(select) 閉じていないレコードの集合を返す。

3.

CONN.EXECUTE(SQL,RowsAffected,C)
パラメータの意味
SQLの値には、SQL文、テーブル名、プロシージャ名、またはデータプロバイダが受け入れることのできる任意の文字列を指定することができます。パフォーマンスを向上させるためには、Cパラメータに適切な値を指定するのがよいでしょう。
オプションのパラメータ RowsAffected は、INSERT、UPDATE、または DELETE クエリが実行された後に影響を受けるクエリの数を返します。これらのクエリは、閉じたレコードセットオブジェクトを返します。
SELECT クエリは、RowsAffected 値が -1 で、コンテンツが 1 行以上あるオープンなレコードセットを返します。

4.

conn.execute sql は,次のコードのように,レコードセット・オブジェクトを返す必要がない場合に適しています.

sql="delete from enews where id="&cstr(id)
conn.実行sql

レコードセット・オブジェクトを返す必要がある場合は、次のコードを使用してください。

sql="select from enews where id="&cstr(id)
set rs = conn.execute(sql)

execute(sql)の括弧を外すと(つまりset rs = conn.execute sql)、「statement not completed」のようなエラーが表示されます。
Execute(SQLコマンド)を実行します。
/Execute(SQLコマンド). 書式2 接続オブジェクト名.Execute(データテーブル名).

rs.open sql,conn
/{br rs.open sql,conn,1,1 {を使用します。
rs.open sql,conn,3,2
rs.open sql,conn,3,3

上記の文の後の数字は何を意味しているのでしょうか?また、数字(rs.open sql,conn)が省略された場合のデフォルトはどれでしょうか?  

ベストアンサー

rs.open sql,conn,a,b

{a: アペンフォワードオンリー(=0) A: ADOPENFORWARDONLY(=0) 読み取り専用で、現在のデータレコードは下にしか移動できない
ADOPENKEYSET(=1) 読み書き、現在のデータレコードを自由に移動できる。
ADOPENDYNAMIC(=2) 読み書き、現在のデータレコードを自由に動かせる、新しいレコードを見ることができる {新しいレコードを見ることができます。
ADOPENSTATIC(=3) 読み取り専用、現在のデータレコードは自由に移動可能

{B:アドロックレドン B: ADLOCKREADONLY(=1) デフォルトのロックタイプ、レコードセットは読み取り専用、レコードは変更不可
ADLOCKPESSIMISTIC(=2) 悲観的ロック、レコードが変更されたとき、データ プロバイダーはレコードの編集が成功するようにレコードをロックしようとします。編集が開始されると同時に、レコードはロックされます。
ADLOCKOPTIMISTIC(=3) 楽観的ロック 、更新されたレコードをコミットするためにUpdateメソッドが使用されるまで、レコードをロックする。 {このロックは
ADLOCKBATCHOPTIMISTIC(=4) バッチ型楽観ロック 複数のレコードを変更でき、UpdateBatchメソッドが呼ばれた後にのみレコードがロックされる。
読み取り専用レコードセットは、レコードを変更する必要がないときに使用する必要があります。一般的な使用では、楽観的ロックがおそらく最良の選択である。なぜなら、レコードはわずかな時間だけロックされ、その間にデータが更新されるからである。これにより、リソースの使用量を減らすことができます。

ASPで実行する場合は、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。BinaryDevelopをもっと応援してくださいね。