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 編資料