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

99 lines
3.2 KiB
ObjectPascal

(*
* Program type: API Interface
*
* Description:
* This program creates a new database, given an SQL statement
* string. The newly created database is accessed after its
* creation, and a sample table is added.
*
* The SQLCODE is extracted from the status vector and is used
* to check whether the database already exists.
*
* 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 api1;
{$APPTYPE CONSOLE}
uses
SysUtils,
JvUIBase,
JvUIBLib;
const
create_tbl = 'CREATE TABLE dbinfo (when_created DATE)';
insert_date = 'INSERT INTO dbinfo VALUES (''NOW'')';
var
newdb: IscDbHandle = nil; (* database handle *)
trans: IscTrHandle = nil; (* transaction handle *)
create_db: string; (* 'create database' statement *)
new_dbname: string;
FLibrary: TUIBLibrary;
begin
FLibrary := TUIBLibrary.Create;
try
if (ParamCount > 1) then
new_dbname := ParamStr(1)
else
new_dbname := ExtractFilePath(ParamStr(0)) + 'new.gdb';
if FileExists(new_dbname) then DeleteFile(new_dbname);
// Construct a 'create database' statement.
// The database name could have been passed as a parameter.
create_db := format('CREATE DATABASE "%s" USER "SYSDBA" PASSWORD "masterkey"', [new_dbname]);
// Create a new database.
// The database handle is zero.
FLibrary.DSQLExecuteImmediate(newdb, trans, create_db, 1, nil);
WriteLn(format('Created database ''%s''.', [new_dbname]));
// Connect to the new database and create a sample table.
(* newdb will be set to null on success *)
FLibrary.DetachDatabase(newdb);
FLibrary.AttachDatabase(new_dbname, newdb, 'user_name = SYSDBA; password = masterkey');
(* Create a sample table. *)
FLibrary.TransactionStart(trans, newdb);
FLibrary.DSQLExecuteImmediate(newdb, trans, create_tbl, 1, nil);
//isc_commit_transaction(@status, @trans);
FLibrary.TransactionCommit(trans);
(* Insert 1 row into the new table. *)
FLibrary.TransactionStart(trans, newdb);
FLibrary.DSQLExecuteImmediate(newdb, trans, insert_date, 1, nil);
FLibrary.TransactionCommit(trans);
WriteLn('Successfully accessed the newly created database.');
FLibrary.DetachDatabase(newdb);
ReadLn;
finally
FLibrary.Free;
end;
end.