📄 sdinf.pas
字号:
type
HINFX_RC = SQLPOINTER; // row & collection handle
type
{ TInfFunctions }
TInfFunctions = class(TOdbcFunctions)
public
procedure SetApiCalls(ASqlLibModule: THandle); override;
procedure ClearApiCalls; override;
end;
ESDInfError = class(ESDOdbcError);
{ TIInfDatabase }
TIInfDatabase = class(TICustomOdbcDatabase)
private
function GetCalls: TInfFunctions;
protected
procedure FreeSqlLib; override;
procedure LoadSqlLib; override;
procedure RaiseSDEngineError(AErrorCode, ANativeError: TSDEResult; const AMsg, ASqlState: string); override;
procedure DoConnect(const sRemoteDatabase, sUserName, sPassword: string); override;
public
function CreateSqlCommand: TISqlCommand; override;
property Calls: TInfFunctions read GetCalls;
end;
{ TIInfCommand }
TIInfCommand = class(TICustomOdbcCommand)
private
function GetSqlDatabase: TIInfDatabase;
protected
property SqlDatabase: TIInfDatabase read GetSqlDatabase;
end;
const
DefSqlApiDLL_A= 'ICLIT09A.DLL';
DefSqlApiDLL_B= 'ICLIT09B.DLL';
DefSqlApiDLL = 'ICLIT09B.DLL;ICLIT09A.DLL';
var
SqlApiDLL: string;
InfCalls: TInfFunctions;
{$IFDEF SD_CLR}
// =============== import functions from DefSqlApiDLL_A ===================
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocConnect')]
function SQLAllocConnect(henv :SQLHENV; var hdbc: SQLHDBC): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocEnv')]
function SQLAllocEnv(var henv: SQLHENV): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocHandle')]
function SQLAllocHandle(fHandleType: SQLSMALLINT; hInput: SQLHANDLE;
var hOutput: SQLHANDLE): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLAllocStmt')]
function SQLAllocStmt(hdbc: SQLHDBC; var hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLBindCol')]
function SQLBindCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT; fCType: SQLSMALLINT;
rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
pcbValue: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLCancel')]
function SQLCancel(hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLCloseCursor')]
function SQLCloseCursor(hStmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLColAttribute')]
function SQLColAttribute(hstmt: SQLHSTMT; icol, fDescType: SQLUSMALLINT;
rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT;
pcbDesc: SQLPOINTER; pfDesc: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLColumns')]
function SQLColumns(hStmt: SQLHSTMT;
szCatalogName: TSDCharPtr; cbCatalogName: SQLSMALLINT;
szSchemaName: TSDCharPtr; cbSchemaName: SQLSMALLINT;
szTableName: TSDCharPtr; cbTableName: SQLSMALLINT;
szColumnName: TSDCharPtr; cbColumnName: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLConnect')]
function SQLConnect(hdbc: SQLHDBC; szDSN: TSDCharPtr; cbDSN: SQLSMALLINT;
szUID: TSDCharPtr; cbUID: SQLSMALLINT;
szAuthStr: TSDCharPtr; cbAuthStr: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLCopyDesc')]
function SQLCopyDesc(hDescSource: SQLHDESC; hDescTarget: SQLHDESC): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLDataSources')]
function SQLDataSources(hEnv: SQLHENV; fDirection: SQLUSMALLINT;
szDSN: TSDCharPtr; cbDSNMax: SQLSMALLINT; var cbDSN: SQLSMALLINT;
szDescription: TSDCharPtr; cbDescriptionMax: SQLSMALLINT;
var cbDescription: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLDescribeCol')]
function SQLDescribeCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
szColName: TSDCharPtr; cbColNameMax: SQLSMALLINT; var cbColName, fSqlType: SQLSMALLINT;
var cbColDef: SQLUINTEGER; var ibScale, fNullable: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLDisconnect')]
function SQLDisconnect(hdbc: SQLHDBC): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLEndTran')]
function SQLEndTran(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE; fType: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLError')]
function SQLError(henv: SQLHENV; hdbc: SQLHDBC; hstmt: SQLHSTMT;
szSqlState: TSDCharPtr; var fNativeError: SQLINTEGER;
szErrorMsg: TSDCharPtr; cbErrorMsgMax: SQLSMALLINT;
var cbErrorMsg: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLExecDirect')]
function SQLExecDirect(hstmt: SQLHSTMT; szSqlStr: TSDCharPtr; cbSqlStr: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLExecute')]
function SQLExecute(hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFetch')]
function SQLFetch(hstmt: SQLHSTMT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFetchScroll')]
function SQLFetchScroll(hStmt: SQLHSTMT;
FetchOrientation: SQLSMALLINT; FetchOffset: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeConnect')]
function SQLFreeConnect(hdbc: SQLHDBC): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeEnv')]
function SQLFreeEnv(henv: SQLHENV): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeHandle')]
function SQLFreeHandle(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLFreeStmt')]
function SQLFreeStmt(hstmt: SQLHSTMT; fOption: SQLUSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetConnectAttr')]
function SQLGetConnectAttr(hDbc: SQLHDBC; Attribute: SQLINTEGER; Value: SQLPOINTER;
BufferLength: SQLINTEGER; pStringLength: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetConnectOption')]
function SQLGetConnectOption(hDbc: SQLHDBC; fOption: SQLUSMALLINT; pvParam: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetCursorName')]
function SQLGetCursorName(hStmt: SQLHSTMT; szCursor: TSDCharPtr; cbCursorMax: SQLSMALLINT;
var cbCursor: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetData')]
function SQLGetData(hStmt: SQLHSTMT; icol: SQLUSMALLINT; fCType: SQLSMALLINT;
rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
var cbValue: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDescField')]
function SQLGetDescField(DescriptorHandle: SQLHDESC; RecNumber, FieldIdentifier: SQLSMALLINT;
Value: SQLPOINTER; BufferLength: SQLINTEGER;
var StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDescRec')]
function SQLGetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
Name: TSDCharPtr; BufferLength: SQLSMALLINT; var StringLength, RecType, RecSubType: SQLSMALLINT;
var Length: SQLINTEGER; var Precision, Scale, Nullable: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDiagField')]
function SQLGetDiagField(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE; iRecNumber: SQLSMALLINT;
fDiagIdentifier: SQLSMALLINT; var cbDiagInfo: SQLINTEGER;
cbDiagInfoMax: SQLSMALLINT; pcbDiagInfo: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetDiagRec')]
function SQLGetDiagRec(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE; iRecNumber: SQLSMALLINT;
szSqlState: TSDCharPtr; var fNativeError: SQLINTEGER;
szErrorMsg: TSDCharPtr; cbErrorMsgMax: SQLSMALLINT;
var cbErrorMsg: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetEnvAttr')]
function SQLGetEnvAttr(hEnv: SQLHENV; Attr: SQLINTEGER; Value: SQLPOINTER;
BufLen: SQLINTEGER; var StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetFunctions')]
function SQLGetFunctions(hDbc: SQLHDBC; fFunction: SQLUSMALLINT; var fExists: SQLUSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetInfo')]
function SQLGetInfo(hDbc: SQLHDBC; fInfoType: SQLUSMALLINT; rgbInfoValue: SQLPOINTER;
cbInfoValueMax: SQLSMALLINT; var cbInfoValue: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetStmtAttr')]
function SQLGetStmtAttr(hStmt: SQLHSTMT; Attribute: SQLINTEGER; Value: SQLPOINTER;
BufferLength: SQLINTEGER; var StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetStmtOption')]
function SQLGetStmtOption(hStmt: SQLHSTMT; fOption: SQLUSMALLINT; pvParam: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLGetTypeInfo')]
function SQLGetTypeInfo(hStmt: SQLHSTMT; fSqlType: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLNumResultCols')]
function SQLNumResultCols(hStmt: SQLHSTMT; var ccol: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLParamData')]
function SQLParamData(hStmt: SQLHSTMT; var gbValue: SQLPOINTER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLPrepare')]
function SQLPrepare(hStmt: SQLHSTMT; szSqlStr: TSDCharPtr; cbSqlStr: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLPutData')]
function SQLPutData(hStmt: SQLHSTMT; rgbValue: SQLPOINTER; cbValue: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLRowCount')]
function SQLRowCount(hStmt: SQLHSTMT; var crow: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetConnectAttr')]
function SQLSetConnectAttr(hDbc: SQLHDBC; fOption: SQLINTEGER;
pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetConnectOption')]
function SQLSetConnectOption(hDbc: SQLHDBC; fOption: SQLUSMALLINT; vParam: SQLUINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetCursorName')]
function SQLSetCursorName(hStmt: SQLHSTMT; szCursor: TSDCharPtr; cbCursor: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetDescField')]
function SQLSetDescField(DescriptorHandle: SQLHDESC; RecNumber, FieldIdentifier: SQLSMALLINT;
Value: SQLPOINTER; BufferLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetDescRec')]
function SQLSetDescRec(DescriptorHandle: SQLHDESC; RecNumber, RecType, RecSubType: SQLSMALLINT;
Length: SQLINTEGER; Precision, Scale: SQLSMALLINT;
Data: SQLPOINTER; var StringLength, Indicator: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetEnvAttr')]
function SQLSetEnvAttr(hEnv: SQLHENV; Attr: SQLINTEGER; Value: SQLPOINTER;
StringLength: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetParam')]
function SQLSetParam(hStmt: SQLHSTMT; ipar: SQLUSMALLINT; fCType, fSqlType: SQLSMALLINT;
cbParamDef: SQLUINTEGER; ibScale: SQLSMALLINT;
rgbValue: SQLPOINTER; var cbValue: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetStmtAttr')]
function SQLSetStmtAttr(hStmt: SQLHSTMT; fOption: SQLINTEGER;
pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSetStmtOption')]
function SQLSetStmtOption(hStmt: SQLHSTMT; fOption: SQLUSMALLINT; vParam: SQLUINTEGER): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLSpecialColumns')]
function SQLSpecialColumns(hStmt: SQLHSTMT; fColType: SQLUSMALLINT;
szCatalogName: TSDCharPtr; cbCatalogName: SQLSMALLINT;
szSchemaName: TSDCharPtr; cbSchemaName: SQLSMALLINT;
szTableName: TSDCharPtr; cbTableName: SQLSMALLINT;
fScope, fNullable: SQLUSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLStatistics')]
function SQLStatistics(hStmt: SQLHSTMT;
szCatalogName: TSDCharPtr; cbCatalogName: SQLSMALLINT;
szSchemaName: TSDCharPtr; cbSchemaName: SQLSMALLINT;
szTableName: TSDCharPtr; cbTableName: SQLSMALLINT;
fUnique, fAccuracy: SQLUSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLTables')]
function SQLTables(hStmt: SQLHSTMT;
szCatalogName: TSDCharPtr; cbCatalogName: SQLSMALLINT;
szSchemaName: TSDCharPtr; cbSchemaName: SQLSMALLINT;
szTableName: TSDCharPtr; cbTableName: SQLSMALLINT;
szTableType: TSDCharPtr; cbTableType: SQLSMALLINT): SQLRETURN; external;
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLTransact')]
function SQLTransact(hEnv: SQLHENV; hDbc: SQLHDBC; fType: SQLUSMALLINT): SQLRETURN; external;
// ------------------ from SQLEXT.H --------------------------------
[DllImport(DefSqlApiDLL_A, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'SQLBrowseConnect')]
function SQLBrowseConnect(hDbc: SQLHDBC; szConnStrIn: TSDCharPtr; cbConnStrIn: SQLSMALLINT;
szConnStrOut: TSDCharPtr; cbConnStrOutMax: SQLSMALLINT;
var cbConnStrOut: SQLSMALLINT): SQLRETURN; external;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -