📄 dbxpress.pas
字号:
{ *************************************************************************** }
{ }
{ Kylix and Delphi Cross-Platform Visual Component Library }
{ }
{ Copyright (c) 1999, 2001 Borland Software Corporation }
{ }
{ *************************************************************************** }
unit DBXpress;
{$Z+}
interface
{$IFDEF MSWINDOWS}
uses Windows;
{$ENDIF}
{$IFDEF LINUX}
uses Libc;
{$ENDIF}
const
MAXNAMELEN = 64;
SQL_ERROR = -1;
SQL_NULL_DATA = 100;
SQL_SUCCESS = $0000;
DBXERR_NOMEMORY = $0001;
DBXERR_INVALIDFLDTYPE = $0002;
DBXERR_INVALIDHNDL = $0003;
DBXERR_INVALIDTIME = $0004;
DBXERR_NOTSUPPORTED = $0005;
DBXERR_INVALIDXLATION = $0006;
DBXERR_INVALIDPARAM = $0007;
DBXERR_OUTOFRANGE = $0008;
DBXERR_SQLPARAMNOTSET = $0009;
DBXERR_EOF = $000A;
DBXERR_INVALIDUSRPASS = $000B;
DBXERR_INVALIDPRECISION = $000C;
DBXERR_INVALIDLEN = $000D;
DBXERR_INVALIDXISOLEVEL = $000E;
DBXERR_INVALIDXTXNID = $000F;
DBXERR_DUPLICATETXNID = $0010;
DBXERR_DRIVERRESTRICTED = $0011;
DBXERR_LOCALTRANSACTIVE = $0012;
DBXERR_MULTIPLETRANSNOTENABLED = $0013;
DBX_MAXSTATICERRORS = $0014;
MaxReservedStaticErrors = 255;
// traceFlags
trUNKNOWN = $0000;
trQPREPARE = $0001; { prepared query statements }
trQEXECUTE = $0002; { executed query statements }
trERROR = $0004; { vendor errors }
trSTMT = $0008; { statement ops (i.e. allocate, free) }
trCONNECT = $0010; { connect / disconnect }
trTRANSACT = $0020; { transaction }
trBLOB = $0040; { blob i/o }
trMISC = $0080; { misc. }
trVENDOR = $0100; { vendor calls }
trDATAIN = $0200; { parameter bound data }
trDATAOUT = $0400; { trace fetched data }
// eSQLTableType
eSQLTable = $0001;
eSQLView = $0002;
eSQLSystemTable = $0004;
eSQLSynonym = $0008;
eSQLTempTable = $0010;
eSQLLocal = $0020;
// eSQLProcType
eSQLProcedure = $0001;
eSQLFunction = $0002;
eSQLPackage = $0004;
eSQLSysProcedure = $0008;
// eSQLColType
eSQLRowId = $0001;
eSQLRowVersion = $0002;
eSQLAutoIncr = $0004;
eSQLDefault = $0008;
// eSQLIndexType
eSQLNonUnique = $0001;
eSQLUnique = $0002;
eSQLPrimaryKey = $0004;
{ Field Types (Logical) }
fldUNKNOWN = 0;
fldZSTRING = 1; { Null terminated string }
fldDATE = 2; { Date (32 bit) }
fldBLOB = 3; { Blob }
fldBOOL = 4; { Boolean (16 bit) }
fldINT16 = 5; { 16 bit signed number }
fldINT32 = 6; { 32 bit signed number }
fldFLOAT = 7; { 64 bit floating point }
fldBCD = 8; { BCD }
fldBYTES = 9; { Fixed number of bytes }
fldTIME = 10; { Time (32 bit) }
fldTIMESTAMP = 11; { Time-stamp (64 bit) }
fldUINT16 = 12; { Unsigned 16 bit Integer }
fldUINT32 = 13; { Unsigned 32 bit Integer }
fldFLOATIEEE = 14; { 80-bit IEEE float }
fldVARBYTES = 15; { Length prefixed var bytes }
fldLOCKINFO = 16; { Look for LOCKINFO typedef }
fldCURSOR = 17; { For Oracle Cursor type }
fldINT64 = 18; { 64 bit signed number }
fldUINT64 = 19; { Unsigned 64 bit Integer }
fldADT = 20; { Abstract datatype (structure) }
fldARRAY = 21; { Array field type }
fldREF = 22; { Reference to ADT }
fldTABLE = 23; { Nested table (reference) }
fldDATETIME = 24; { DateTime structure field }
fldFMTBCD = 25; { BCD Variant type: required by Midas, same as BCD for DBExpress}
MAXLOGFLDTYPES = 26; { Number of logical fieldtypes }
{ Sub Types (Logical) }
{ fldFLOAT subtype }
fldstMONEY = 21; { Money }
{ fldBLOB subtypes }
fldstMEMO = 22; { Text Memo }
fldstBINARY = 23; { Binary data }
fldstFMTMEMO = 24; { Formatted Text }
fldstOLEOBJ = 25; { OLE object (Paradox) }
fldstGRAPHIC = 26; { Graphics object }
fldstDBSOLEOBJ = 27; { dBASE OLE object }
fldstTYPEDBINARY = 28; { Typed Binary data }
fldstACCOLEOBJ = 30; { Access OLE object }
fldstHMEMO = 33; { CLOB }
fldstHBINARY = 34; { BLOB }
fldstBFILE = 36; { BFILE }
{ fldZSTRING subtype }
fldstPASSWORD = 1; { Password }
fldstFIXED = 31; { CHAR type }
fldstUNICODE = 32; { Unicode }
{ fldINT32 subtype }
fldstAUTOINC = 29;
{ fldADT subtype }
fldstADTNestedTable = 35; { ADT for nested table (has no name) }
{ fldDATE subtype }
fldstADTDATE = 37; { DATE (OCIDate) with in an ADT }
type
DBINAME = packed array [0..31] of Char; { holds a name }
FLDVchk = ( { Field Val Check type }
fldvNOCHECKS, { Does not have explicit val checks }
fldvHASCHECKS, { One or more val checks on the field }
fldvUNKNOWN { Dont know at this time }
);
FLDRights = ( { Field Rights }
fldrREADWRITE, { Field can be Read/Written }
fldrREADONLY, { Field is Read only }
fldrNONE, { No Rights on this field }
fldrUNKNOWN { Dont know at this time }
);
PFLDDesc = ^FLDDesc;
FLDDesc = packed record { Field Descriptor }
iFldNum : Word; { Field number (1..n) }
szName : DBINAME; { Field name }
iFldType : Word; { Field type }
iSubType : Word; { Field subtype (if applicable) }
iUnits1 : SmallInt; { Number of Chars, digits etc }
iUnits2 : SmallInt; { Decimal places etc. }
iOffset : Word; { Offset in the record (computed) }
iLen : LongWord; { Length in bytes (computed) }
iNullOffset : Word; { For Null bits (computed) }
efldvVchk : FLDVchk; { Field Has vcheck (computed) }
efldrRights : FLDRights; { Field Rights (computed) }
bCalcField : WordBool; { Is Calculated field (computed) }
iUnUsed : packed array [0..1] of Word;
end;
pObjAttrDesc = ^ObjAttrDesc;
ObjAttrDesc = packed record
iFldNum : Word; { Field id }
pszAttributeName: PChar; { Object attribute name }
end;
pObjTypeDesc = ^ObjTypeDesc;
ObjTypeDesc = packed record
iFldNum : Word; { Field id }
szTypeName : DBINAME; { Object type name }
end;
pObjParentDesc = ^ObjParentDesc;
ObjParentDesc = packed record
iFldNum : Word; { Field id }
iParentFldNum : Word; { Parent Field id }
end;
SQLResult = Word;
var
getSQLDriver : function(VendorLib, SResourceFile: PChar; out pDriver): SQLResult; stdcall;
type
pCBType = ^CBType;
CBType = ( { Call back type }
cbGENERAL, { General purpose }
cbRESERVED1,
cbRESERVED2,
cbINPUTREQ, { Input requested }
cbRESERVED4,
cbRESERVED5,
cbBATCHRESULT, { Batch processing rslts }
cbRESERVED7,
cbRESTRUCTURE, { Restructure }
cbRESERVED9,
cbRESERVED10,
cbRESERVED11,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -