Componentes.Terceros.jvcl/official/3.32/examples/JvUIB/API/api7.dpr

93 lines
2.7 KiB
ObjectPascal

(*
* Program type: API Interface
*
* Description:
* This program selects a blob data type.
* A set of project descriptions is printed.
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at:
* http://www.borland.com/devsupport/interbase/opensource/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Borland Software Corporation
* and its predecessors. Portions created by Borland are Copyright (c)
* 1994 - 2001 Borland Software Corporation.
* All rights reserved.
*
* Contributor(s):
* Aaron Ruddick InterBase QA, Borland Software Corp.
* Dan Mikhayltsa InterBase QA, Borland Software Corp.
*)
program api7;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes,
JvUIBase,
JvUIBLib;
var
sel_str: string;
blob_handle: IscBlobHandle = nil;
DB: IscDbHandle = nil; // database handle
trans: IscTrHandle = nil; // transaction handle
stmt: IscStmtHandle = nil; // statement handle
sqlda: TSQLResult;
empdb: string;
str: string;
FLibrary: TUIBLibrary;
begin
FLibrary := TUIBLibrary.Create;
try
if (ParamCount > 1) then
empdb := ParamStr(1) else
empdb := 'D:\Unified Interbase\demo\Database\employee.db';
sel_str := 'SELECT proj_name, proj_desc, product FROM project WHERE ' +
'product IN ("software", "hardware", "other") ORDER BY proj_name';
FLibrary.AttachDatabase(empdb, DB, 'user_name=SYSDBA;password=masterkey');
FLibrary.TransactionStart(trans, DB);
FLibrary.DSQLAllocateStatement(DB, stmt);
sqlda := TSQLResult.Create(3);
FLibrary.DSQLPrepare(trans, stmt, sel_str, 1, sqlda);
FLibrary.DSQLExecute(trans, stmt, 1);
(*
* For each project in the select statement, get and display
* project descriptions.
*)
while FLibrary.DSQLFetch(stmt, 1, sqlda) do //sqlda
begin
writeln(format('PROJECT: %s TYPE: %s', [sqlda.AsString[0], sqlda.AsString[2]]));
FLibrary.BlobOpen(DB, trans, blob_handle, sqlda.AsQuad[1]);
str := FLibrary.BlobReadString(blob_handle);
WriteLn(str);
FLibrary.BlobClose(blob_handle);
end;
FLibrary.DSQLFreeStatement(stmt, DSQL_close);
FLibrary.TransactionCommit(trans);
FLibrary.DetachDatabase(DB);
sqlda.Free;
readln;
finally
FLibrary.Free;
end;
end.