SAK 図書館
ASP VB Script oo4o + SQL 応用編1 oo4o 接続 - OpenDatabase
Active Server Pages(ASP) - VB Script で、oo4o による Oracle アクセスに
ついて説明します。
oo4o は、Oracle RDBMS でみ使用可能です。
■Oracle oo4o
機能として、
Oracle 接続 (connect)
レコードセット処理 (select)
トランザクション処理 (commit、rollback)
アクションクエリ実行 (insert、update、delete)
を使います。
尚、oo4o の .close メソッド系は内部的になにもしていないので、
Set オブジォクト = Nothing で処理します。
■oo4o 接続(Oracle 接続、オラクル接続)
Public Const ORADB_DEFAULT = &H0
dim dbname
dim cnuser
'** oo4o 接続
dbname = ""
'|_ Oracle サービス名(別名)"
cnuser = "SAK/SAK"
'| |_ パスワード
'|_ ユーザ名
if isempty(session("OraSession")) then
Set session("OraSession") = Server.CreateObject("OracleInProcServer.XOraSession")
end
if isempty(session("OraDatabase")) then
Set session("OraDatabase") = session("OraSession").OpenDatabase(dbname, cnuser, ORADB_DEFAULT)
end
'** RDB 処理
'ここに操作コードが入る
■補足
・oo4o 接続は、session 変数で行う。
アクセスの度に接続していてはレスポンスが悪い。
・session("OraSession") については、application("OraSession") の方が
更に効率は良い。(global.asa に記述すると言う方法もある。)
application("OraSession") の場合、Oracle サービスがダウンしたときに
ASP 全体も再起動しないといけない。
session("OraSession") では、ブラウザを上げ直すだけで良い。
application 変数を使用する場合は、session("OraSession") を
application("OraSession") と読み替えて下さい。
■接続プール
・OraSession.CreateDatabasePool のようにコネクションプールを使用して
接続することもできる。
■session("OraSession") メソッド
session("OraSession").OpenDatabase (データベース接続)
session("OraSession").BeginTrans (トランザクション開始)
session("OraSession").CommitTrans (トランザクションコミット)
session("OraSession").Rollback (トランザクションロールバック)
session("OraSession").ResetTrans (トランザクション無条件ロールバック)
session("OraSession").LastServerErrReset (ラストエラーリセット)
Set session("OraSession") = Nothing (セッションクローズ)
■session("OraSession") プロパティ
session("OraSession").OIPVersionNumber (Oracle バージョン)
session("OraSession").LastServerErr (ラストエラーコード)
session("OraSession").LastServerErrText (ラストエラーメッセージ)
■session("OraDatabase") メソッド
session("OraDatabase").ExecuteSQL (SQL 実行)
session("OraDatabase").CreateSQL (OraSqlStmt の作成)
session("OraDatabase").CreateDynaset (ダイナセット作成)
session("OraDatabase").CreateCustomDynaset (カスタムダイナセット作成)
session("OraDatabase").CreatePlsqlDynaset (PL/SQL ダイナセット作成)
session("OraDatabase").CreatePlsqlCustomDynaset (カスタム PL/SQL ダイナセット作成)
session("OraDatabase").LastServerErrReset (ラストエラーリセット)
Set session("OraDatabase") = Nothing (コネクトクローズ)
■session("OraDatabase") プロパティ
session("OraDatabase").Connect (コネクトユーザ名)
session("OraDatabase").DatabaseName (サービス名)
session("OraDatabase").RDBMSVersion (Oracle バージョン)
session("OraDatabase").LastServerErr (ラストエラーコード)
session("OraDatabase").LastServerErrPos (ラストエラーホジション)
session("OraDatabase").LastServerErrText (ラストエラーメッセージ)
session("OraDatabase").Options (オプションフラグ値)
■OpenDatabase 定数
Public Const ORADB_DEFAULT = &H0
Public Const ORADB_ORAMODE = &H1
Public Const ORADB_NOWAIT = &H2
Public Const ORADB_DBDEFAULT = &H4
Public Const ORADB_DEFERRED = &H8
■古い書き方?
DbOpenDatabase、DbExecuteSQL、DbCreateSQL、DbCreateDynaset、
DbBeginTrans、DbCommitTrans、DbRollback 等の Db はなくても良い。
■現実的なコード例
<%@ Language=VBScript %>
<%
'=======================================================================
' 準備
'=======================================================================
Public Const ORADB_DEFAULT = &H0
dim dbname
dim cnuser
'** エラートラップ開始
on error resume next
'** サービス、ユーザ設定
dbname = ""
cnuser = "SAK/SAK"
'// Oracle サービス名(別名)、ユーザ・パスワード指定
'** oo4o 接続
if isempty(session("OraSession")) then
Set session("OraSession") = Server.CreateObject("OracleInProcServer.XOraSession")
if err <> 0 then
response.write("<P>データベースに接続出来ません。<BR>" _
& "CreateObject - Oracle oo4o エラー</P>")
end if
end if
if isempty(session("OraDatabase")) then
Set session("OraDatabase") = session("OraSession").OpenDatabase(dbname, cnuser, ORADB_DEFAULT)
if err <> 0 then
response.write("<P>データベースに接続出来ません。<BR>" _
& err & ": " & error & "</P>")
end if
end if
'** エラートラップ終了
on error goto 0
'=======================================================================
' 処理
'=======================================================================
response.write("<P>-- 終了 --</P>")
%>
■更に現実的なコードアドバイス
・サービス名、ユーザ名をコード中に定義するより、初期化ファイルなどを
使用してプログラムと独立させる方が可搬性に富んでいる。
この場合、パスワードなどがもろ見えになってしまっては困る。
暗号化関数を作成して、隠蔽処理など必ず実施する。
■ASP VB Script oo4o + SQL 応用編資料
■ASP VB Script ADO + SQL 応用編資料
■ASP VB Script 基礎実地編資料
■ASP VB Script 基礎編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料