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

📄 sqlapi.h

📁 通用的数据库中间库
💻 H
📖 第 1 页 / 共 3 页
字号:
	unsigned int	m_nPieceSize;

	unsigned int PrepareReader(
		unsigned int nBlobSize,	// to optimaze buf allocation for internal buffer, 0 = unknown
		unsigned int nCallerMaxSize,	// max Piece that can be proceeced by API
		unsigned char *&pBuf,
		saLongOrLobReader_t fnReader,
		unsigned int nReaderWantedPieceSize,
		void *pReaderAddlData,
		bool bAddSpaceForNull = false);
	void InvokeReader(
		SAPieceType_t ePieceType,
		unsigned char *&pBuf,
		unsigned int nPieceLen);
	SAString asLongOrLob() const;

protected:
	SADataType_t	m_eDataType;

	// null indicator
	bool	*m_pbNull;
	// scalar types
	void	*m_pScalar;
	// Date time
	SADateTime	*m_pDateTime;
	// variable length types (string, bytes, Longs and Lobs)
	SAString	*m_pString;
	// Cursor
	SACommand	*m_pCursor;
private:
	// null indicator
	bool	m_bInternalNull;
	// scalar types
	union
	{
		bool m_Bool;
		short m_Short;
		long m_Long;
		double m_Double;
	} m_InternalScalar;
	SADateTime	m_InternalDateTime;
	// variable length types (string, bytes, Longs and Lobs)
	SAString	m_InternalString;
	// Cursor
	SACommand	m_InternalCursor;

public:
	SAValueRead(SADataType_t eDataType);
	virtual ~SAValueRead();

public:
	SADataType_t DataType() const;

	// Null type
	bool isNull() const;

	// scalar types
	bool asBool() const;
	short asShort() const;
	long asLong() const;
	double asDouble() const;

	// date/time
	SADateTime asDateTime() const;

	// variable length types
	SAString asString() const;
	SAString asBytes() const;
	SAString asLongBinary() const;
	SAString asLongChar() const;
	SAString asBLob() const;
	SAString asCLob() const;

	// cursor
	SACommand *asCursor() const;

	void setLongOrLobReaderMode(SALongOrLobReaderModes_t eMode);
	SALongOrLobReaderModes_t LongOrLobReaderMode() const;

	// operators for quick accessing values
	// do not inline to prevent varnings
	operator bool() const;
	operator short() const;
	operator long() const;
	operator double() const;
	operator SADateTime() const;
	operator SAString() const;
	operator SACommand *() const;

	// data and indicator storage
	void setIndicatorStorage(bool *pStorage);
private:
	void setDataStorage(void *pStorage, SADataType_t eDataType);
};

class SQLAPI_API SAValue : public SAValueRead
{
	friend class ISACursor;
	friend class IibCursor;
	friend class IssDBLibCursor;
	friend class Iora7Cursor;
	friend class Iora8Cursor;
	friend class IsbCursor;
	friend class IodbcCursor;
	friend class Idb2Cursor;
	friend class IinfCursor;
	friend class IsybCursor;
	friend class ImyCursor;
	friend class IpgCursor;

protected:
	saLongOrLobWriter_t	m_fnWriter;
	int	m_nWriterSize;
	void			*m_pWriterAddlData;
	void			*m_pWriterBuf;
	unsigned int	m_nWriterAlloc;
	unsigned int	m_nWriterWritten;

	unsigned int InvokeWriter(
		SAPieceType_t &ePieceType,
		int nCallerMaxSize,
		void *&pBuf);

public:
	SAValue(SADataType_t eDataType);
	virtual ~SAValue();

	// Null type
	void setAsNull();

	void setAsUnknown();

	// scalar types
	bool &setAsBool();
	short &setAsShort();
	long &setAsLong();
	double &setAsDouble();

	// date/time
	SADateTime &setAsDateTime();

	// variable length types
	SAString &setAsString();
	SAString &setAsBytes();
	SAString &setAsLongBinary(
		saLongOrLobWriter_t fnWriter = saDefaultLongOrLobWriter,
		unsigned int nWriterSize = 0, void *pAddlData = NULL);
	SAString &setAsLongChar(
		saLongOrLobWriter_t fnWriter = saDefaultLongOrLobWriter,
		unsigned int nWriterSize = 0, void *pAddlData = NULL);
	SAString &setAsBLob(
		saLongOrLobWriter_t fnWriter = saDefaultLongOrLobWriter,
		unsigned int nWriterSize = 0, void *pAddlData = NULL);
	SAString &setAsCLob(
		saLongOrLobWriter_t fnWriter = saDefaultLongOrLobWriter,
		unsigned int nWriterSize = 0, void *pAddlData = NULL);

	// cursor
	SACommand *&setAsCursor();
};

class SQLAPI_API SAParam : public SAValue
{
	friend class SACommand;
	friend class saPlaceHolder;
	friend class saOptions;

protected:
	SACommand *m_pCommand;

	SAString			m_sName;
	SADataType_t		m_eParamType;
	int					m_nNativeType;
	int					m_nParamSize;
	SAParamDirType_t	m_eDirType;

protected:
	SAParam(
		SACommand *pCommand,
		const SAString &sName,
		SADataType_t eParamType,
		int nNativeType,
		int nParamSize,
		SAParamDirType_t eDirType);
	virtual ~SAParam();

public:
	const SAString &Name() const;
	SADataType_t ParamType() const;
	void setParamType(SADataType_t eParamType);
	int ParamNativeType() const;
	void setParamNativeType(int nNativeType);
	int ParamSize() const;
	void setParamSize(int nParamSize);
	SAParamDirType_t ParamDirType() const;
	void setParamDirType(SAParamDirType_t eParamDirType);

	void ReadLongOrLob(
		saLongOrLobReader_t fnReader,
		unsigned int nReaderWantedSize,
		void *pAddlData);
};

class SQLAPI_API saPlaceHolder
{
	friend class SACommand;

	SAString	m_sFullName;
	int			m_nStart;
	int			m_nEnd;

	SAParam		*m_pParamRef;

private:
	saPlaceHolder(
		const SAString &sFullName,
		int nStart,
		int nEnd,
		SAParam *pParamRef);
	virtual ~saPlaceHolder();

public:
	const SAString &getFullName() const;
	int getStart() const;
	int getEnd() const;
	SAParam *getParam() const;
};

class SQLAPI_API SABytes : public SAString
{
public:
	SABytes(const SAString &sData);
};

class SQLAPI_API SALongOrLob : public SAString
{
	friend class SACommand;

protected:
	saLongOrLobWriter_t	m_fnWriter;
	unsigned int		m_nWriterPieceSize;
	void				*m_pAddlData;

	SALongOrLob(const SAString &sData);
	SALongOrLob(
		saLongOrLobWriter_t fnWriter,
		unsigned int nWriterPieceSize,
		void *pAddlData);
};

class SQLAPI_API SALongBinary : public SALongOrLob
{
public:
	SALongBinary(const SAString &sData);
	SALongBinary(
		saLongOrLobWriter_t fnWriter,
		unsigned int nWriterPieceSize,
		void *pAddlData);
};

class SQLAPI_API SALongChar : public SALongOrLob
{
public:
	SALongChar(const SAString &sData);
	SALongChar(
		saLongOrLobWriter_t fnWriter,
		unsigned int nWriterPieceSize,
		void *pAddlData);
};

class SQLAPI_API SABLob : public SALongOrLob
{
public:
	SABLob(const SAString &sData);
	SABLob(
		saLongOrLobWriter_t fnWriter,
		unsigned int nWriterPieceSize,
		void *pAddlData);
};

class SQLAPI_API SACLob : public SALongOrLob
{
public:
	SACLob(const SAString &sData);
	SACLob(
		saLongOrLobWriter_t fnWriter,
		unsigned int nWriterPieceSize,
		void *pAddlData);
};

class SQLAPI_API SAField : public SAValueRead
{
	friend class SACommand;

protected:
	SACommand &m_Command;

	// as reported by describe API
	int					m_nPos;	// 1-based
	SAString			m_sName;
	SADataType_t		m_eFieldType;
	int					m_nNativeType;
	int					m_nFieldSize;
	int					m_nFieldPrecision;
	int					m_nFieldScale;
	bool				m_bFieldRequired;

protected:
	SAField(
		SACommand &Command,
		int nPos,	// 1-based
		const SAString &sName,
		SADataType_t eFieldType,
		int nNativeType,
		int nFieldSize,
		int nFieldPrecision,
		int nFieldScale,
		bool bFieldRequired);
	virtual ~SAField();

public:
	int Pos() const;
	const SAString &Name() const;
	SADataType_t FieldType() const;
	int FieldNativeType() const;
	int FieldSize() const;
	int FieldPrecision() const;
	int FieldScale() const;
	bool isFieldRequired() const;

	void ReadLongOrLob(
		saLongOrLobReader_t fnReader,
		unsigned int nReaderWantedSize,
		void *pAddlData);
};

class SQLAPI_API SAException
{
	friend class SAConnection;
	friend class SACommand;
	friend class SAStoredProc;
	friend class Iora7Connection;
	friend class Iora8Connection;
	friend class IibConnection;
	friend class IodbcConnection;
	friend class IsbConnection;
	friend class Iss6Connection;

public:
	SAException(
		SAErrorClass_t eError,
		int nNativeError,
		int nErrPos,
		const SAString &sMsg);
	SAException(
		SAErrorClass_t eError,
		int nNativeError,
		int nErrPos,
		const SAChar *lpszFormat, ...);

	SAException(const SAException &other);

public:
	virtual ~SAException();

	static void throwUserException(
		int nUserCode, const SAChar *lpszFormat, ...);

	SAErrorClass_t ErrClass() const;
	int ErrNativeCode() const;
	int ErrPos() const;
	SAString ErrText() const;

protected:
	SAErrorClass_t	m_eErrorClass;
	int				m_nNativeError;
	int				m_nErrPos;
	SAString		m_sMsg;

	int	nReserved;
};

class SQLAPI_API SAUserException : public SAException
{
	friend class SAException;

protected:
	SAUserException(int nUserCode, const SAString &sMsg);

public:
	virtual ~SAUserException();
};

#endif // !defined(AFX_SQLAPI_H__BC064F47_40FC_45B6_AA67_2E6D2568E219__INCLUDED_)

⌨️ 快捷键说明

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