📄 zlibdb2sql.pas
字号:
SQLINTEGER = Integer;
PSQLINTEGER = ^SQLINTEGER;
SQLSMALLINT = SmallInt;
PSQLSMALLINT = ^SQLSMALLINT;
SQLDOUBLE = Double;
SQLFLOAT = Double;
// SQLREAL = Real;
SQLRETURN = SQLSMALLINT;
SQLUINTEGER = SQLINTEGER;
PSQLUINTEGER = ^SQLUINTEGER;
SQLUSMALLINT = SQLSMALLINT;
SQLPOINTER = Pointer;
SQLHANDLE = SQLINTEGER;
PSQLHANDLE = ^SQLHANDLE;
SQLHENV = SQLINTEGER;
PSQLHENV = ^SQLHENV;
SQLHDBC = SQLINTEGER;
PSQLHDBC = ^SQLHDBC;
SQLHSTMT = SQLINTEGER;
PSQLHSTMT = ^SQLHSTMT;
SQLHDESC = SQLHANDLE;
(*
#if defined(SQL_NO_NATIVE_BIGINT_SUPPORT)
typedef struct
{
SQLUINTEGER dwLowWord;
SQLINTEGER dwHighWord;
} SQLBIGINT;
typedef struct
{
SQLUINTEGER dwLowWord;
SQLUINTEGER dwHighWord;
} SQLUBIGINT;
#elif defined(SQL_BIGINT_TYPE)
typedef SQL_BIGINT_TYPE SQLBIGINT;
typedef SQL_BIGUINT_TYPE SQLUBIGINT;
#endif
*)
SQL_DATE_STRUCT = packed record
year: SQLSMALLINT;
month: SQLUSMALLINT;
day: SQLUSMALLINT;
end;
PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
SQL_TIME_STRUCT = packed record
hour: SQLUSMALLINT;
minute: SQLUSMALLINT;
second: SQLUSMALLINT;
end;
PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
SQL_TIMESTAMP_STRUCT = packed record
year: SQLSMALLINT;
month: SQLUSMALLINT;
day: SQLUSMALLINT;
hour: SQLUSMALLINT;
minute: SQLUSMALLINT;
second: SQLUSMALLINT;
fraction: SQLUINTEGER; { fraction of a second }
end;
PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
{************** Plain API Function types definition *************}
type
TSQLAllocConnect = function(henv: SQLHENV; phdbc: PSQLHDBC): SQLRETURN; stdcall;
TSQLAllocEnv = function(phenv: PSQLHENV): SQLRETURN; stdcall;
TSQLAllocStmt = function(hdbc: SQLHDBC; phstmt: PSQLHSTMT): SQLRETURN; stdcall;
TSQLAllocHandle = function(fHandleType: SQLSMALLINT; hInput: SQLHANDLE;
phOutput: PSQLHANDLE): SQLRETURN; stdcall;
TSQLBindCol = function(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
TSQLCancel = function(hstmt: SQLHSTMT): SQLRETURN; stdcall;
TSQLColAttribute = function(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
fDescType: SQLUSMALLINT; rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT;
pcbDesc: PSQLSMALLINT; pfDesc: SQLPOINTER): SQLRETURN; stdcall;
TSQLConnect = function(hdbc: SQLHDBC; szDSN: PSQLCHAR; cbDSN: SQLSMALLINT;
szUID: PSQLCHAR; cbUID: SQLSMALLINT; szAuthStr: PSQLCHAR;
cbAuthStr: SQLSMALLINT): SQLRETURN; stdcall;
TSQLDescribeCol = function(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
szColName: PSQLCHAR; cbColNameMax: SQLSMALLINT; pcbColName: PSQLSMALLINT;
pfSqlType: PSQLSMALLINT; pcbColDef: PSQLUINTEGER; pibScale: PSQLSMALLINT;
pfNullable: PSQLSMALLINT): SQLRETURN; stdcall;
TSQLDisconnect = function(hdbc: SQLHDBC): SQLRETURN; stdcall;
TSQLError = function(henv: SQLHENV; hdbc: SQLHDBC; hstmt: SQLHSTMT;
szSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER; szErrorMsg: PSQLCHAR;
cbErrorMsgMax: SQLSMALLINT; pcbErrorMsg: PSQLSMALLINT): SQLRETURN; stdcall;
TSQLExecDirect = function(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
cbSqlStr: SQLINTEGER): SQLRETURN; stdcall;
TSQLExecute = function(hstmt: SQLHSTMT): SQLRETURN; stdcall;
TSQLFetch = function(hstmt: SQLHSTMT): SQLRETURN; stdcall;
TSQLFreeConnect = function(hdbc: SQLHDBC): SQLRETURN; stdcall;
TSQLFreeEnv = function(henv: SQLHENV): SQLRETURN; stdcall;
TSQLFreeStmt = function(hstmt: SQLHSTMT; fOption: SQLUSMALLINT): SQLRETURN;
stdcall;
TSQLCloseCursor = function(hStmt: SQLHSTMT): SQLRETURN; stdcall;
TSQLGetCursorName = function(hstmt: SQLHSTMT; szCursor: PSQLCHAR;
cbCursorMax: SQLSMALLINT; pcbCursor: PSQLSMALLINT): SQLRETURN; stdcall;
TSQLGetData = function(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
TSQLNumResultCols = function(hstmt: SQLHSTMT; pccol: PSQLSMALLINT): SQLRETURN;
stdcall;
TSQLPrepare = function(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
cbSqlStr: SQLINTEGER): SQLRETURN; stdcall;
TSQLRowCount = function(hstmt: SQLHSTMT; pcrow: PSQLINTEGER): SQLRETURN; stdcall;
TSQLSetCursorName = function(hstmt: SQLHSTMT; szCursor: PSQLCHAR;
cbCursor: SQLSMALLINT): SQLRETURN; stdcall;
TSQLSetParam = function(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
fCType: SQLSMALLINT; fSqlType: SQLSMALLINT; cbParamDef: SQLUINTEGER;
ibScale: SQLSMALLINT; rgbValue: SQLPOINTER; pcbValue: PSQLINTEGER):
SQLRETURN; stdcall;
TSQLTransact = function(henv: SQLHENV; hdbc: SQLHDBC; fType: SQLUSMALLINT):
SQLRETURN; stdcall;
TSQLEndTran = function(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
fType: SQLSMALLINT): SQLRETURN; stdcall;
TSQLFreeHandle = function(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE):
SQLRETURN; stdcall;
TSQLGetDiagRec = function(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
iRecNumber: SQLSMALLINT; pszSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER;
pszErrorMsg: PSQLCHAR; cbErrorMsgMax: SQLSMALLINT;
pcbErrorMsg: PSQLSMALLINT): SQLRETURN; stdcall;
TSQLGetDiagField = function(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
iRecNumber: SQLSMALLINT; fDiagIdentifier: SQLSMALLINT; pDiagInfo: SQLPOINTER;
cbDiagInfoMax: SQLSMALLINT; pcbDiagInfo: PSQLSMALLINT): SQLRETURN; stdcall;
TSQLCopyDesc = function(hDescSource: SQLHDESC; hDescTarget: SQLHDESC):
SQLRETURN; stdcall;
TSQLGetDescField = function(DescriptorHandle: SQLHDESC;
RecNumber: SQLSMALLINT; FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER;
BufferLength: SQLINTEGER; StringLength: PSQLINTEGER): SQLRETURN; stdcall;
TSQLGetDescRec = function(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
Name: PSQLCHAR; BufferLength: SQLSMALLINT; StringLength: PSQLSMALLINT;
_Type: PSQLSMALLINT; SubType: PSQLSMALLINT; Length: PSQLINTEGER;
Precision: PSQLSMALLINT; Scale: PSQLSMALLINT; Nullable: PSQLSMALLINT):
SQLRETURN; stdcall;
TSQLSetDescField = function(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER; BufferLength: SQLINTEGER):
SQLRETURN; stdcall;
TSQLSetDescRec = function(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
_Type: SQLSMALLINT; SubType: SQLSMALLINT; Length: SQLINTEGER;
Precision: SQLSMALLINT; Scale: SQLSMALLINT; Data: SQLPOINTER;
StringLength: PSQLINTEGER; Indicator: PSQLINTEGER): SQLRETURN; stdcall;
{ New added functions }
TSQLSetConnectAttr = function(hdbc: SQLHDBC; fOption: SQLINTEGER;
pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; stdcall;
TSQLSetConnectOption = function(hdbc: SQLHDBC; fOption: SQLUSMALLINT;
vParam: SQLUINTEGER): SQLRETURN; stdcall;
TSQLSetStmtAttr = function(hstmt: SQLHSTMT; fOption: SQLINTEGER;
pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; stdcall;
TSQLSetStmtOption = function(hstmt: SQLHSTMT; fOption: SQLUSMALLINT;
vParam: SQLUINTEGER): SQLRETURN; stdcall;
TSQLGetSubString = function(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
SourceLocator: SQLINTEGER; FromPosition: SQLUINTEGER;
ForLength: SQLUINTEGER; TargetCType: SQLSMALLINT; rgbValue: SQLPOINTER;
cbValueMax: SQLINTEGER; StringLength: PSQLINTEGER;
IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
TSQLGetLength = function(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
Locator: SQLINTEGER; StringLength: PSQLINTEGER;
IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
TSQLGetPosition = function(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
SourceLocator: SQLINTEGER; SearchLocator: SQLINTEGER; SearchLiteral: PSQLCHAR;
SearchLiteralLength: SQLINTEGER; FromPosition: SQLUINTEGER;
LocatedAt: PSQLUINTEGER; IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
TSQLBindParameter = function(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
fParamType: SQLSMALLINT; fCType: SQLSMALLINT; fSqlType: SQLSMALLINT;
cbColDef: SQLUINTEGER; ibScale: SQLSMALLINT; rgbValue: SQLPOINTER;
cbValueMax: SQLINTEGER; pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
TSQLParamData = function(hstmt: SQLHSTMT; prgbValue: SQLPOINTER):
SQLRETURN; stdcall;
TSQLPutData = function(hstmt: SQLHSTMT; rgbValue: SQLPOINTER;
cbValue: SQLINTEGER): SQLRETURN; stdcall;
{************* Plain API Function variables definition ************}
var
SQLAllocConnect: TSQLAllocConnect;
SQLAllocEnv: TSQLAllocEnv;
SQLAllocStmt: TSQLAllocStmt;
SQLAllocHandle: TSQLAllocHandle;
SQLBindCol: TSQLBindCol;
SQLCancel: TSQLCancel;
SQLColAttribute: TSQLColAttribute;
SQLConnect: TSQLConnect;
SQLDescribeCol: TSQLDescribeCol;
SQLDisconnect: TSQLDisconnect;
SQLError: TSQLError;
SQLExecDirect: TSQLExecDirect;
SQLExecute: TSQLExecute;
SQLFetch: TSQLFetch;
SQLFreeConnect: TSQLFreeConnect;
SQLFreeEnv: TSQLFreeEnv;
SQLFreeStmt: TSQLFreeStmt;
SQLCloseCursor: TSQLCloseCursor;
SQLGetCursorName: TSQLGetCursorName;
SQLGetData: TSQLGetData;
SQLNumResultCols: TSQLNumResultCols;
SQLPrepare: TSQLPrepare;
SQLRowCount: TSQLRowCount;
SQLSetCursorName: TSQLSetCursorName;
SQLSetParam: TSQLSetParam;
SQLTransact: TSQLTransact;
SQLEndTran: TSQLEndTran;
SQLFreeHandle: TSQLFreeHandle;
SQLGetDiagRec: TSQLGetDiagRec;
SQLGetDiagField: TSQLGetDiagField;
SQLCopyDesc: TSQLCopyDesc;
SQLGetDescField: TSQLGetDescField;
SQLGetDescRec: TSQLGetDescRec;
SQLSetDescField: TSQLSetDescField;
SQLSetDescRec: TSQLSetDescRec;
{ New added functions }
SQLSetConnectAttr: TSQLSetConnectAttr;
SQLSetConnectOption: TSQLSetConnectOption;
SQLSetStmtAttr: TSQLSetStmtAttr;
SQLSetStmtOption: TSQLSetStmtOption;
SQLGetSubString: TSQLGetSubString;
SQLGetLength: TSQLGetLength;
SQLGetPosition: TSQLGetPosition;
SQLBindParameter: TSQLBindParameter;
SQLParamData: TSQLParamData;
SQLPutData: TSQLPutData;
{ Library Initialization }
function Db2SqlLoadLib: Boolean;
var
DLL: string;// = DEFAULT_DLL_LOCATION;
hDLL: THandle; // = 0;
DLLVersion: string; // = '';
LibLoaded: Boolean; // = False; // must be added
implementation
uses SysUtils, ZExtra, ZDBaseConst;
{ Initialize DB2 dynamic library }
function Db2SqlLoadLib: Boolean;
begin
if hDLL = 0 then
begin
DLL := DEFAULT_DLL_LOCATION;
hDLL := GetModuleHandle(PChar(DLL));
if hDLL = 0 then
begin
hDLL := LoadLibrary(PChar(DLL));
LibLoaded := True;
end;
end;
if hDLL <> 0 then
begin
SQLAllocConnect := GetProcAddress(hDLL, 'SQLAllocConnect');
SQLAllocEnv := GetProcAddress(hDLL, 'SQLAllocEnv');
SQLAllocStmt := GetProcAddress(hDLL, 'SQLAllocStmt');
SQLAllocHandle := GetProcAddress(hDLL, 'SQLAllocHandle');
SQLBindCol := GetProcAddress(hDLL, 'SQLBindCol');
SQLCancel := GetProcAddress(hDLL, 'SQLCancel');
SQLColAttribute := GetProcAddress(hDLL, 'SQLColAttribute');
SQLConnect := GetProcAddress(hDLL, 'SQLConnect');
SQLDescribeCol := GetProcAddress(hDLL, 'SQLDescribeCol');
SQLDisconnect := GetProcAddress(hDLL, 'SQLDisconnect');
SQLError := GetProcAddress(hDLL, 'SQLError');
SQLExecDirect := GetProcAddress(hDLL, 'SQLExecDirect');
SQLExecute := GetProcAddress(hDLL, 'SQLExecute');
SQLFetch := GetProcAddress(hDLL, 'SQLFetch');
SQLFreeConnect := GetProcAddress(hDLL, 'SQLFreeConnect');
SQLFreeEnv := GetProcAddress(hDLL, 'SQLFreeEnv');
SQLFreeStmt := GetProcAddress(hDLL, 'SQLFreeStmt');
SQLCloseCursor := GetProcAddress(hDLL, 'SQLCloseCursor');
SQLGetCursorName := GetProcAddress(hDLL, 'SQLGetCursorName');
SQLGetData := GetProcAddress(hDLL, 'SQLGetData');
SQLNumResultCols := GetProcAddress(hDLL, 'SQLNumResultCols');
SQLPrepare := GetProcAddress(hDLL, 'SQLPrepare');
SQLRowCount := GetProcAddress(hDLL, 'SQLRowCount');
SQLSetCursorName := GetProcAddress(hDLL, 'SQLSetCursorName');
SQLSetParam := GetProcAddress(hDLL, 'SQLSetParam');
SQLTransact := GetProcAddress(hDLL, 'SQLTransact');
SQLEndTran := GetProcAddress(hDLL, 'SQLEndTran');
SQLFreeHandle := GetProcAddress(hDLL, 'SQLFreeHandle');
SQLGetDiagRec := GetProcAddress(hDLL, 'SQLGetDiagRec');
SQLGetDiagField := GetProcAddress(hDLL, 'SQLGetDiagField');
SQLCopyDesc := GetProcAddress(hDLL, 'SQLCopyDesc');
SQLGetDescField := GetProcAddress(hDLL, 'SQLGetDescField');
SQLGetDescRec := GetProcAddress(hDLL, 'SQLGetDescRec');
SQLSetDescField := GetProcAddress(hDLL, 'SQLSetDescField');
SQLSetDescRec := GetProcAddress(hDLL, 'SQLSetDescRec');
{ New added functions }
SQLSetConnectAttr := GetProcAddress(hDLL, 'SQLSetConnectAttr');
SQLSetConnectOption := GetProcAddress(hDLL, 'SQLSetConnectOption');
SQLSetStmtAttr := GetProcAddress(hDLL, 'SQLSetStmtAttr');
SQLSetStmtOption := GetProcAddress(hDLL, 'SQLSetStmtOption');
SQLGetSubString := GetProcAddress(hDLL, 'SQLGetSubString');
SQLGetLength := GetProcAddress(hDLL, 'SQLGetLength');
SQLGetPosition := GetProcAddress(hDLL, 'SQLGetPosition');
SQLBindParameter := GetProcAddress(hDLL, 'SQLBindParameter');
SQLParamData := GetProcAddress(hDLL, 'SQLParamData');
SQLPutData := GetProcAddress(hDLL, 'SQLPutData');
Result := True;
end
else
raise Exception.Create(Format(SLibraryNotFound,[DLL]));
end;
initialization
finalization
if (hDLL <> 0) and LibLoaded then
FreeLibrary(hDLL);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -