SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

ASP VB Script ADO + SQL 応用編 (その二) ADO 更新 - Execute

ADO による更新は、SQL 文法をそのまま送信して行います。
尚、SQL Plus 実行時の最後の『;』は、ASP からは必要ありません。
VB 固有の edit などによる更新は、言語に左右されやすいので説明しません。
10 万件程度の更新では、SQL をそのまま発行しても問題なしです。
もしかすると、edit 等の構文より高速かもしれません。
基本的に Oracle、SQL-Sever、MDB で共通です。

■データ更新、レコード更新 (追加、修正、削除)

'** ODBC 接続
  if isempty(session("s3cn_ado")) then
    set session("s3cn_ado") = server.CreateObject ("ADODB.Connection")
    session("s3cn_ado").Open "dsn=SAK3_ADO;uid=SAK;pwd=SAK"
    session("s3cn_ado").CursorLocation = 3
  end if

'** RDB 処理
  session("s3cn_ado").Execute "insert into sak.練習テーブル名 values " _
    & "(データ1, データ2...)"

以上の様に、session("s3cn_ado").Execute で、SQL 文の insert、update、
delete を発行して、全ての更新が可能となります。
尚、create や drop などの命令も発行できます。
SQL すべてが発行可能ですので、色々と試してみると良いでしょう。

■トランザクション

複数の session("s3cn_ado").Execute で発行したリクエストをひとつのトラン
ザクションとして処理するには、
  session("s3cn_ado").BeginTrans     (トランザクション開始)
  session("s3cn_ado").CommitTrans    (トランザクション終了)
  session("s3cn_ado").RollbackTrans  (トランザクションキャンセル)
を使用します。

■現実的なコード例

<%@ Language=VBScript %>
<%
'=======================================================================
'  SQL-RDB 処理
'=======================================================================

  dim dsn

'** DSN 設定
  dsn = "dsn=SAK3_ADO;uid=SAK;pwd=SAK"
  '// ODBC システム DSN を使用しての接続例である。

'** ODBC 接続
  if isempty(session("s3cn_ado")) then
    set session("s3cn_ado") = server.CreateObject ("ADODB.Connection")
    session("s3cn_ado").Open dsn
    session("s3cn_ado").CursorLocation = 3
  end if

'** RDB 処理
  if RdbShori(session("s3cn_ado")) = FALSE then
    response.write("RDB 更新に失敗しました。")
  else
    response.write("RDB 更新正常終了。")
  end if

'=======================================================================
'  RDB 処理
'=======================================================================
function RdbShori(s3cn_ado)

'** エラーセット
  RdbShori = FALSE

'** トランザクション開始
  session("s3cn_ado").BeginTrans

'** エラートラップ開始
  on error resume next

'** RDB 処理1
  session("s3cn_ado").Execute "insert into sak.練習テーブル名 values " _
    & "(データ1, データ2...)"
  if err <> 0 then
    session("s3cn_ado").RollbackTrans
    exit function
  end if

'** RDB 処理2
  session("s3cn_ado").Execute "insert into sak.練習テーブル名 values " _
    & "(データ1, データ2...)"
  if err <> 0 then
    session("s3cn_ado").RollbackTrans
    exit function
  end if

'** エラートラップ終了
  on error goto 0

'** トランザクション終了
  session("s3cn_ado").CommitTrans

'** 正常セット
  RdbShori = TRUE

end function
%>

以上で、おわかりのように、RDB 処理1 と 2 がどちらも正常に終了した場合の
み更新結果が本当に反映され、どちらかがエラーになったときは、何ひとつ更新
がなかった状態に戻されます。

■ASP VB Script ADO + SQL 応用編資料
■ASP VB Script oo4o + SQL 応用編資料
■ASP VB Script 基礎実地編資料
■ASP VB Script 基礎編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK