|
Example - Using a BFile LOB Locator |
Top Previous Next |
|
BFile LOBを使って、データベースサーバー上のファイルを読み込むことが出来ます。BFile LOBはサーバー上のファイルを指定するためのdirectoryとfilenameプロパティを持っています。 データを選択することは別として、新しいTLOBLocatorインスタンスを作成でき、ファイル名とディレクトリをそれに割り当て、SQLを使わずにファイルにアクセスできます: var LOB: TLOBLocator; Buffer: array[0..99] of Byte; begin // Create a new BFile LOB := TLOBLocator.Create(MainSession, otBFile); // Assign a directory alias and filename LOB.Directory := 'DATA_DIR'; LOB.Filename := 'X100.DAT'; // Read the first 100 bytes if LOB.FileExists then LOB.Read(Buffer, 100); LOB.Free; end;
ディレクトリはエイリアス(小文字・大文字を区別します!)で、SQL命令のcreate directoryを使ってサーバー上に作られたものでなくてはなりません。FileExistsメソッドは、ファイルがサーバー上のディレクトリに存在するかどうかを示します。もしディレクトリのエイリアスが存在しなかったら、例外が発生します。 データベース内のBfileカラムのディレクトリかファイル名を設定するには、SQL関数のBfilenameを使ってください。例えば: update filetable set filecolumn = bfilename(:directory, :filename)
また、Bfile LOB Locatorを作成して、directoryとfilenameプロパティを設定して、それをupdateかinsert命令の変数と関連付けて、それらを実行することが出来ます: var LOB: TLOBLocator; begin // Create a new BFile LOB := TLOBLocator.Create(MainSession, otBFile); // Assign a directory alias and filename LOB.Directory := 'DATA_DIR'; LOB.Filename := 'X100.DAT'; // Set the LOB variable LOBQuery.SetComplexVariable('filecolumn', LOB); // update filetable set filecolumn = :filecolumn LOBQuery.Execute; LOB.Free; end; |