⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdcommon.hpp

📁 SQLDirect Component Library is a light-weight Borland Database Engine replacement for Borland Delphi
💻 HPP
📖 第 1 页 / 共 2 页
字号:
	bool Required;
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TSDFieldDesc(void) : System::TObject() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TSDFieldDesc(void) { }
	#pragma option pop
	
};

#pragma pack(pop)

class DELPHICLASS TSDFieldDescList;
#pragma pack(push, 4)
class PASCALIMPLEMENTATION TSDFieldDescList : public Classes::TList 
{
	typedef Classes::TList inherited;
	
private:
	TSDFieldDesc* __fastcall GetFieldDescs(int Index);
	
public:
	__fastcall virtual ~TSDFieldDescList(void);
	DYNAMIC void __fastcall Clear(void);
	TSDFieldDesc* __fastcall AddFieldDesc(void);
	void __fastcall ArrangeFieldNames(void);
	TSDFieldDesc* __fastcall FieldDescByName(const AnsiString AFieldName);
	TSDFieldDesc* __fastcall FieldDescByNumber(int AFieldNo);
	__property TSDFieldDesc* FieldDescs[int Index] = {read=GetFieldDescs/*, default*/};
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TSDFieldDescList(void) : Classes::TList() { }
	#pragma option pop
	
};

#pragma pack(pop)

#pragma pack(push, 1)
struct TSDFieldInfo
{
	int FetchStatus;
	int DataSize;
} ;
#pragma pack(pop)

typedef TSDFieldInfo *PSDFieldInfo;

typedef DynamicArray<int >  TIntArray;

typedef TParam TSDHelperParam;
;

typedef TParams TSDHelperParams;
;

typedef Db::TParamType TSDHelperParamType;

#pragma option push -b
enum TSDCommandType { ctQuery, ctTable, ctStoredProc };
#pragma option pop

typedef void __fastcall (__closure *TSDReleaseHandleEvent)(bool SaveRes);

#pragma pack(push, 4)
class PASCALIMPLEMENTATION TISqlCommand : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	TSDCommandType FCommandType;
	AnsiString FCommandText;
	AnsiString FNativeCommand;
	int FBlobFieldCount;
	TSDFieldDescList* FFieldDescs;
	Db::TParams* FParamsRef;
	char *FParamsBuffer;
	char *FFieldsBuffer;
	int FBlobCacheOffs;
	DynamicArray<int >  FFieldBufOffs;
	int FMaxCharParamSize;
	TSDBufferList* FBufList;
	TISqlDatabase* FSqlDatabase;
	TSDReleaseHandleEvent FReleaseHandle;
	int __fastcall GetFieldBufOffs(int Index);
	bool __fastcall GetPrepared(void);
	TISqlDatabase* __fastcall GetSqlDatabase(void);
	void __fastcall SetParamsRef(Db::TParams* Value);
	
protected:
	void __fastcall AddParam(AnsiString AParamName, Db::TFieldType ADataType, Db::TParamType AParamType
		);
	void * __fastcall GetFieldBuffer(int AFieldNo, void * SelBuf);
	virtual void __fastcall DoReleaseHandle(bool SaveRes);
	virtual void __fastcall AllocParamsBuffer(void);
	virtual void __fastcall AllocFieldsBuffer(void);
	virtual void __fastcall BindParamsBuffer(void);
	virtual void __fastcall FreeParamsBuffer(void);
	virtual void __fastcall FreeFieldsBuffer(void);
	virtual void __fastcall SetFieldsBuffer(void);
	virtual void __fastcall DoPrepare(AnsiString ACommandValue) = 0 ;
	virtual void __fastcall DoExecDirect(AnsiString ACommandValue) = 0 ;
	virtual void __fastcall DoExecute(void) = 0 ;
	virtual int __fastcall CnvtDateTime2DBDateTime(Db::TFieldType ADataType, System::TDateTime Value, char * 
		Buffer, int BufSize);
	virtual void __fastcall InitParamList(void);
	void __fastcall ClearFieldDescs(void);
	virtual void __fastcall FetchBlobFields(void);
	virtual Db::TFieldType __fastcall FieldDataType(int ExtDataType);
	TSDFieldDesc* __fastcall FieldDescByName(const AnsiString AFieldName);
	virtual void __fastcall GetFieldDescs(TSDFieldDescList* Descs);
	virtual char * __fastcall GetFieldsBuffer(void);
	virtual int __fastcall GetFieldsBufferSize(void);
	virtual void * __fastcall GetHandle(void);
	virtual int __fastcall GetParamsBufferSize(void);
	virtual Word __fastcall NativeDataSize(Db::TFieldType FieldType);
	virtual int __fastcall NativeDataType(Db::TFieldType FieldType);
	int __fastcall NativeParamSize(Db::TParam* Param);
	void __fastcall ParseFieldNames(const AnsiString theSelect, Classes::TStrings* FldInfo);
	virtual bool __fastcall RequiredCnvtFieldType(Db::TFieldType FieldType);
	void __fastcall SetCommandText(AnsiString Value);
	void __fastcall SetNativeCommand(AnsiString Value);
	__property TSDBufferList* BufList = {read=FBufList};
	__property AnsiString NativeCommand = {read=FNativeCommand};
	__property char * ParamsBuffer = {read=FParamsBuffer};
	__property char * FieldsBuffer = {read=GetFieldsBuffer};
	__property int FieldBufOffs[int Index] = {read=GetFieldBufOffs};
	
public:
	__fastcall virtual TISqlCommand(TISqlDatabase* ASqlDatabase);
	__fastcall virtual ~TISqlCommand(void);
	void __fastcall SaveResults(void);
	virtual void __fastcall CloseResultSet(void);
	virtual void __fastcall Disconnect(bool Force);
	virtual void __fastcall InitNewCommand(void);
	virtual void __fastcall ExecDirect(AnsiString ACommandValue);
	virtual void __fastcall Execute(void);
	virtual int __fastcall GetAutoIncValue(void);
	virtual int __fastcall GetRowsAffected(void);
	virtual bool __fastcall NextResultSet(void);
	virtual void __fastcall Prepare(AnsiString ACommandValue);
	virtual bool __fastcall ResultSetExists(void);
	virtual bool __fastcall FetchNextRow(void);
	virtual void __fastcall InitFieldDescs(void);
	virtual bool __fastcall GetCnvtFieldData(TSDFieldDesc* AFieldDesc, void * Buffer, int BufSize);
	TBytes __fastcall GetBlobValue(TSDFieldDesc* AFieldDesc);
	virtual void __fastcall GetOutputParams(void);
	void __fastcall PutBlobValue(TSDFieldDesc* AFieldDesc, TBytes sBlobValue);
	virtual int __fastcall ReadBlob(TSDFieldDesc* AFieldDesc, TBytes &BlobData);
	virtual int __fastcall WriteBlob(int FieldNo, const char * Buffer, int Count);
	virtual int __fastcall WriteBlobByName(AnsiString Name, const char * Buffer, int Count);
	bool __fastcall GetFieldAsInt64(Word AFieldNo, System::Comp &Value);
	bool __fastcall GetFieldAsInt16(Word AFieldNo, short &Value);
	bool __fastcall GetFieldAsInt32(Word AFieldNo, int &Value);
	bool __fastcall GetFieldAsFloat(Word AFieldNo, double &Value);
	bool __fastcall GetFieldAsString(Word AFieldNo, AnsiString &Value);
	__property int BlobCacheOffs = {read=FBlobCacheOffs, nodefault};
	__property int BlobFieldCount = {read=FBlobFieldCount, nodefault};
	__property TSDCommandType CommandType = {read=FCommandType, write=FCommandType, nodefault};
	__property AnsiString CommandText = {read=FCommandText};
	__property TSDFieldDescList* FieldDescs = {read=FFieldDescs};
	__property void * Handle = {read=GetHandle};
	__property int MaxCharParamSize = {read=FMaxCharParamSize, nodefault};
	__property Db::TParams* Params = {read=FParamsRef, write=SetParamsRef};
	__property bool Prepared = {read=GetPrepared, nodefault};
	__property TISqlDatabase* SqlDatabase = {read=GetSqlDatabase};
	__property TSDReleaseHandleEvent OnReleaseHandle = {read=FReleaseHandle, write=FReleaseHandle};
};

#pragma pack(pop)

struct TBcd;
typedef TBcd *PBcd;

#pragma pack(push, 1)
struct TBcd
{
	Byte Precision;
	Byte SignSpecialPlaces;
	Byte Fraction[32];
} ;
#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
static const Shortint MAXFIELDNAMELEN = 0x32;
static const Byte DEFMAXCHARPARAMLEN = 0xff;
static const Byte DEFMAXFIELDSTRINGSIZE = 0xff;
static const Word DEF_BLOB_PIECE_SIZE = 0x7ff0;
static const Shortint MAX_BCDFIELD_PREC = 0x14;
static const Shortint MAX_BCDFIELD_SCALE = 0x4;
static const Shortint MAX_INTFIELD_PREC = 0xa;
static const Shortint MAX_SINTFIELD_PREC = 0x5;
static const Shortint indTRUNC = 0xfffffffe;
static const Shortint indNULL = 0xffffffff;
static const Shortint indVALUE = 0x0;
static const Shortint fldstUNKNOWN = 0x0;
static const Shortint fldstMEMO = 0x10;
static const Shortint fldstBINARY = 0x11;
static const Shortint fldstHMEMO = 0x12;
static const Shortint fldstHBINARY = 0x13;
static const Shortint fldstHCFILE = 0x14;
static const Shortint fldstHBFILE = 0x15;
#define ServerDelimiters ":@"
static const Shortint SizeOfGuidString = 0x26;
static const Shortint SizeOfGuidBinary = 0x10;
extern PACKAGE AnsiString ServerTypeNames[11];
#define CLRHelperDLL "SQLDIRHN.DLL"
extern PACKAGE bool __fastcall IsOldPrefixExists(const AnsiString AParamName, const AnsiString OldPrefix
	);
extern PACKAGE bool __fastcall IsSelectQuery(const AnsiString SQL);
extern PACKAGE AnsiString __fastcall IsLiveQuery(const AnsiString SQL);
extern PACKAGE void __fastcall MoveString(AnsiString SrcStr, int SrcPos, AnsiString &DestStr, int DestPos
	, int Count);
extern PACKAGE void __fastcall CreateParamsFromSQL(Db::TParams* List, const AnsiString SQL, char ParamPrefix
	);
extern PACKAGE AnsiString __fastcall ExtractColumnName(const AnsiString AFieldInfo);
extern PACKAGE AnsiString __fastcall GenerateSQL(Db::TUpdateStatus UpdateStatus, Db::TUpdateMode UpdateMode
	, const AnsiString TableName, Classes::TStrings* FieldInfo, Db::TFields* Fields, bool QuoteIdent);
extern PACKAGE AnsiString __fastcall RepeatChar(char Ch, AnsiString S);
extern PACKAGE AnsiString __fastcall QuoteIdentifier(AnsiString AName, bool UseQuote);
extern PACKAGE AnsiString __fastcall CreateProcedureCallCommand(AnsiString AProcName, Db::TParams* AParams
	, bool IsMSSQL);
extern PACKAGE AnsiString __fastcall ReplaceParamMarkers(AnsiString OldStmt, Db::TParams* AParams);
extern PACKAGE void __fastcall StrRTrim(char * S);
extern PACKAGE bool __fastcall IsNameDelimiter(char C);
extern PACKAGE bool __fastcall IsLiteral(char C);
extern PACKAGE AnsiString __fastcall StripLiterals(const AnsiString Str);
extern PACKAGE int __fastcall LocateText(const AnsiString Substr, const AnsiString S);
extern PACKAGE int __fastcall StrFindFromPos(const AnsiString Substr, const AnsiString S, int StartPos
	);
extern PACKAGE bool __fastcall ReplaceString(bool Once, AnsiString OldStr, AnsiString NewStr, AnsiString 
	&ResultStr);
extern PACKAGE bool __fastcall IsBlobType(Db::TFieldType FieldType);
extern PACKAGE bool __fastcall IsSupportedBlobTypes(Db::TFieldType FieldType);
extern PACKAGE bool __fastcall IsRequiredSizeTypes(Db::TFieldType FieldType);
extern PACKAGE bool __fastcall IsDateTimeType(Db::TFieldType FieldType);
extern PACKAGE bool __fastcall IsNumericType(Db::TFieldType FieldType);
extern PACKAGE AnsiString __fastcall GetAppName(void);
extern PACKAGE AnsiString __fastcall GetModuleFileNameStr(Windows::HINST hModule);
extern PACKAGE AnsiString __fastcall GetHostName(void);
extern PACKAGE AnsiString __fastcall GetSQLDirectVersion(void);
extern PACKAGE AnsiString __fastcall GetSqlLibParamName(int ServerTypeCode);
extern PACKAGE AnsiString __fastcall ExtractLibName(const AnsiString LibNames, char Sep, int &Pos);
extern PACKAGE AnsiString __fastcall ExtractStoredProcName(const AnsiString sFullProcName);
extern PACKAGE AnsiString __fastcall ExtractServerName(const AnsiString sRemoteDatabase);
extern PACKAGE AnsiString __fastcall ExtractDatabaseName(const AnsiString sRemoteDatabase);
extern PACKAGE bool __fastcall ContainsLikeWildcards(const AnsiString s);
extern PACKAGE bool __fastcall ExtractOwnerObjNames(const AnsiString AFullObjName, AnsiString &AOwnerName
	, AnsiString &AObjName);
extern PACKAGE int __fastcall GetFileVersion(const AnsiString FileName);
extern PACKAGE void __fastcall ReadFileVersInfo(const AnsiString FileName, AnsiString &ProductName, 
	AnsiString &VersStr);
extern PACKAGE int __fastcall HelperCompareStr(const AnsiString S1, const AnsiString S2);
extern PACKAGE int __fastcall HelperCompareText(const AnsiString S1, const AnsiString S2);
extern PACKAGE bool __fastcall VarIsStrType(const Variant &AValue);
extern PACKAGE int __fastcall CompareVar(const Variant &V1, const Variant &V2, bool CaseInsensitive)
	;
extern PACKAGE bool __fastcall VarIsEqual(const Variant &AVar1, const Variant &AVar2, bool CaseInsensitive
	, bool PartialKey, bool AtStartOnly);
extern PACKAGE int __fastcall MaxIntValue(int A, int B);
extern PACKAGE int __fastcall MinIntValue(int A, int B);
extern PACKAGE Word __fastcall GetMajorVer(int Ver);
extern PACKAGE Word __fastcall GetMinorVer(int Ver);
extern PACKAGE int __fastcall MakeVerValue(Word MajorVer, Word MinorVer);
extern PACKAGE int __fastcall VersionStringToDWORD(const AnsiString VerStr);
extern PACKAGE System::TDateTime __fastcall SqlDateToDateTime(AnsiString Value);
extern PACKAGE System::TDateTime __fastcall SqlTimeToDateTime(AnsiString Value);
extern PACKAGE double __fastcall SqlStrToFloatDef(AnsiString Value, double Default);
extern PACKAGE bool __fastcall SqlStrToBoolean(AnsiString Value);
extern PACKAGE AnsiString __fastcall CnvtVarBytesToHexString(const Variant &Value);
extern PACKAGE void __fastcall GuidToCharBuffer(char * SrcBuf, int SrcBufLen, char * DstBuf, int DstBufLen
	);
extern PACKAGE void __fastcall ParseTableFieldsFromSQL(const AnsiString theSelect, const Classes::TStrings* 
	FieldList, Classes::TStrings* FldInfo, Classes::TStrings* TblInfo);
extern PACKAGE TSDFieldInfo __fastcall GetFieldInfoStruct(void * Buffer, int Offset);
extern PACKAGE void __fastcall SetFieldInfoStruct(void * Buffer, int Offset, const TSDFieldInfo &Value
	);
extern PACKAGE int __fastcall GetFieldInfoDataSizeOff(void);
extern PACKAGE int __fastcall GetFieldInfoFetchStatusOff(void);
extern PACKAGE TBytes __fastcall GetFieldBlobData(char * RecBuf, int ABlobCacheOffs, int AFieldOffset
	);
extern PACKAGE int __fastcall GetFieldBlobDataSize(char * RecBuf, int ABlobCacheOffs, int AFieldOffset
	);
extern PACKAGE void __fastcall SetFieldBlobData(char * RecBuf, int ABlobCacheOffs, int AFieldOffset, 
	TBytes Value);
extern PACKAGE Byte __fastcall HelperMemReadByte(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWriteByte(const void * Ptr, int Offset, Byte Value);
extern PACKAGE short __fastcall HelperMemReadInt16(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWriteInt16(const void * Ptr, int Offset, short Value);
extern PACKAGE int __fastcall HelperMemReadInt32(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWriteInt32(const void * Ptr, int Offset, int Value);
extern PACKAGE System::Comp __fastcall HelperMemReadInt64(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWriteInt64(const void * Ptr, int Offset, System::Comp Value)
	;
extern PACKAGE double __fastcall HelperMemReadDouble(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWriteDouble(const void * Ptr, int Offset, double Value);
extern PACKAGE float __fastcall HelperMemReadSingle(const void * Ptr, int Offset);
extern PACKAGE void * __fastcall HelperMemReadPtr(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWritePtr(const void * Ptr, int Offset, void * Value);
extern PACKAGE bool __fastcall HelperCurrToBCD(System::Currency Curr, void * BCDPtr, int Precision, 
	int Decimals);
extern PACKAGE Db::TDateTimeRec __fastcall HelperMemReadDateTimeRec(const void * Ptr, int Offset);
extern PACKAGE void __fastcall HelperMemWriteDateTimeRec(const void * Ptr, int Offset, const Db::TDateTimeRec 
	&Value);
extern PACKAGE void __fastcall HelperMemWriteGuid(const void * Ptr, int Offset, const GUID &Value);
extern PACKAGE void __fastcall HelperMemWriteString(const void * Ptr, int Offset, AnsiString Value, 
	int Count);
extern PACKAGE AnsiString __fastcall HelperPtrToString(const void * Ptr, int Len);
extern PACKAGE void __fastcall HelperAssignParamValue(Db::TParam* AParam, const Db::TDateTimeRec &Value
	);
extern PACKAGE void * __fastcall IncPtr(const void * ptr, int Delta);
extern PACKAGE void * __fastcall SafeReallocMem(const void * OldPtr, int Size);
extern PACKAGE void __fastcall SafeCopyMem(void * Src, void * Dest, int Count);
extern PACKAGE void __fastcall SafeInitMem(void * Buffer, int Count, Byte InitByte);
extern PACKAGE Windows::HINST __fastcall HelperLoadLibrary(AnsiString ALibFileName);
extern PACKAGE bool __fastcall CurrToBCD(System::Currency Curr, TBcd &BCD, int Precision, int Decimals
	);
extern PACKAGE bool __fastcall BCDToCurr(const TBcd &BCD, System::Currency &Curr);

}	/* namespace Sdcommon */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Sdcommon;
#endif
#pragma option pop	// -w-

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// SDCommon

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -