📄 sqlapi.h
字号:
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 + -