oo4oを使う
oo4oは Oracleが提供するデータアクセス用の OLEオブジェクトです。これを Delphi3で使うことは可能です(Ver2は未確認)。タイプライブラリを取り込むとコンパイルエラーが出るのでこの方法はお勧めできません。すべてのオブジェクトを Variant型で定義して使用するレイトバインディングの方法を例示します。VBでは ( ) を使用していた個所がいくつか [ ] で表記するのに注意してください。
| ■ Delphiから oo4oを使用する例 |
implementation
{$R *.DFM}
uses
ComObj;
var
objOraSession : variant; {セッションオブジェクト}
objOraDatabase : variant; {データベースオブジェクト}
objOraDynaset : variant; {ダイナセットオブジェクト}
//接続してレコードを追加する処理
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
{Session}
objOraSession := CreateOleObject('OracleInProcServer.XOraSession');
{Database}
objOraDatabase := objOraSession.OpenDatabase['sid','scott/tiger', $0];
{Dynaset}
objOraDynaset := objOraDatabase.dbCreateDynaset['SELECT * FROM TBL_SB WHERE SBNO BETWEEN 18000 AND 19000', $0];
{レコード件数}
Label1.Caption := IntToStr(objOraDynaset.RecordCount);
{Field}
ListBox1.Items.BeginUpdate;
objOraDynaset.MoveFirst;
while not objOraDynaset.EOF do begin
{フィールド内容}
ListBox1.Items.Add(objOraDynaset.Fields['FIELD'].Value);
objOraDynaset.MoveNext;
end;
ListBox1.Items.EndUpdate;
try
{追加SQL発行}
objOraDatabase.ExecuteSQL('INSERT INTO TBL_SB VALUES (9999,1,''Borland'',''Delphi'')');
finally
objOraDynaset.Close;
Screen.Cursor := crDefault;
end;
end;
//終了処理
procedure TForm1.Button2Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
objOraDatabase.Close;
Screen.Cursor := crDefault;
end;
|