📄 sqlapi.h
字号:
#if !defined(AFX_SQLAPI_H__BC064F47_40FC_45B6_AA67_2E6D2568E219__INCLUDED_)
#define AFX_SQLAPI_H__BC064F47_40FC_45B6_AA67_2E6D2568E219__INCLUDED_
#define sa_min(x, y) (x < y? x : y)
#define sa_max(x, y) (x > y? x : y)
#include "osdep.h"
#ifdef LINUX
#define SQLAPI_STATIC
#endif
#ifdef SQLAPI_STATIC
#define SQLAPI_API
#else
#ifdef SQLAPI_EXPORTS
#define SQLAPI_API __declspec(dllexport)
#else
#define SQLAPI_API __declspec(dllimport)
#endif
#endif
#include <time.h>
#include <stdarg.h>
class ISAClient;
class ISAConnection;
class ISACursor;
class SACommand;
struct sa_Commands;
class saOptions;
class SAParam;
class saPlaceHolder;
class SABytes;
class SALongBinary;
class SALongChar;
class SABLob;
class SACLob;
typedef
enum
{
SA_Client_NotSpecified,
SA_ODBC_Client,
SA_Oracle_Client,
SA_SQLServer_Client,
SA_InterBase_Client,
SA_SQLBase_Client,
SA_DB2_Client,
SA_Informix_Client,
SA_Sybase_Client,
SA_MySQL_Client,
SA_PostgreSQL_Client,
_SA_Client_Reserverd = (int)(((unsigned int)(-1))/2)
} SAClient_t;
typedef
enum
{
SA_No_Error,
SA_UserGenerated_Error,
SA_Library_Error,
SA_RDBMS_API_Error,
_SA_ErrorClass_Reserved = (int)(((unsigned int)(-1))/2)
} SAErrorClass_t;
typedef
enum
{
SA_LevelUnknown = -1, // the default
SA_ANSILevel0,
SA_ANSILevel1,
SA_ANSILevel2,
SA_ANSILevel3,
SA_ReadUncommitted = SA_ANSILevel0,
SA_ReadCommitted = SA_ANSILevel1,
SA_RepeatableRead = SA_ANSILevel2,
SA_Serializable = SA_ANSILevel3,
_SA_IsolationLevel_Reserved = (int)(((unsigned int)(-1))/2)
} SAIsolationLevel_t;
typedef
enum
{
SA_AutoCommitUnknown = -1,
SA_AutoCommitOff,
SA_AutoCommitOn,
_SA_AutoCommit_Reserved = (int)(((unsigned int)(-1))/2)
} SAAutoCommit_t;
typedef
enum
{
SA_dtUnknown,
SA_dtBool,
SA_dtShort,
SA_dtLong,
SA_dtDouble,
SA_dtDateTime,
SA_dtString,
SA_dtBytes,
SA_dtLongBinary,
SA_dtLongChar,
SA_dtBLob,
SA_dtCLob,
SA_dtCursor,
SA_dtSpecificToDBMS,
_SA_DataType_Reserved = (int)(((unsigned int)(-1))/2)
} SADataType_t;
typedef
enum
{
SA_CmdUnknown,
SA_CmdSQLStmt,
SA_CmdStoredProc,
_SA_Cmd_Reserved = (int)(((unsigned int)(-1))/2)
}
SACommandType_t;
typedef
enum
{
SA_ParamInput,
SA_ParamInputOutput,
SA_ParamOutput,
SA_ParamReturn,
_SA_ParamDirType_Reserved = (int)(((unsigned int)(-1))/2)
} SAParamDirType_t;
typedef
enum
{
SA_LongOrLobReaderDefault,
SA_LongOrLobReaderManual,
_SA_LongOrLobReaderModes_Reserved = (int)(((unsigned int)(-1))/2)
} SALongOrLobReaderModes_t;
typedef
enum {
SA_FirstPiece = 1,
SA_NextPiece = 2,
SA_LastPiece = 3,
SA_OnePiece = 4,
_SA_Reserved_PieceType = (int)(((unsigned int)(-1))/2)
} SAPieceType_t;
// Long or Lob writer callback, use for parameter binding
typedef unsigned int (*saLongOrLobWriter_t)
(SAPieceType_t &ePieceType, void *pBuf, unsigned int nLen, void *pAddlData);
// default Long or Lob writer callback, use to bind from parameters internal buffer
extern saLongOrLobWriter_t SQLAPI_API saDefaultLongOrLobWriter;
// Long or Lob reader callback, use for field fetching
typedef void (*saLongOrLobReader_t)
(SAPieceType_t ePieceType, void *pBuf, unsigned int nLen, unsigned int nBlobSize, void *pAddlData);
// default Blob reader callback, use to fetch into field internal buffer
extern saLongOrLobReader_t SQLAPI_API saDefaultLongOrLobReader;
class SQLAPI_API saAPI
{
};
class SQLAPI_API saConnectionHandles
{
};
class SQLAPI_API saCommandHandles
{
};
#if defined(SA_UNICODE)
typedef wchar_t SAChar;
#define _SA(x) L ## x
#define sa_strlen(x) wcslen(x)
#define sa_strstr(x, y) wcsstr(x, y)
#define sa_strchr(x, y) wcschr(x, y)
#define sa_isspace(x) iswspace(x)
#define sa_isdigit(x) iswdigit(x)
#define sa_isalpha(x) iswalpha(x)
#define sa_strcmp(x, y) wcscmp(x, y)
#define sa_strncmp(x, y, z) wcsncmp(x, y, z)
#define sa_tolower(x) towlower(x)
#define sa_strcoll(x, y) wcscoll(x, y)
#define sa_strpbrk(x, y) wcspbrk(x, y)
#define sa_strrchr(x, y) wcsrchr(x, y)
#define sa_strtol(x, y, z) wcstol(x, y, z)
#define sa_strtoul(x, y, z) wcstoul(x, y, z)
#define sa_strtod(x, y) wcstod(x, y)
#define sa_toi(x) (int)wcstol(x, NULL, 10)
#define sa_tol(x) wcstol(x, NULL, 10)
#define sa_vsprintf(x, y, z) vswprintf(x, y, z)
#define sa_sprintf swprintf
#define sa_csinc(x) (++(x))
#define sa_clen(x) (1)
#else
typedef char SAChar;
#define _SA(x) x
#define sa_strlen(x) strlen(x)
#define sa_strstr(x, y) strstr(x, y)
#define sa_strchr(x, y) strchr(x, y)
#define sa_isspace(x) isspace((unsigned char)x)
#define sa_isdigit(x) isdigit((unsigned char)x)
#define sa_isalpha(x) isalpha((unsigned char)x)
#define sa_strcmp(x, y) strcmp(x, y)
#define sa_strncmp(x, y, z) strncmp(x, y, z)
#define sa_tolower(x) tolower((unsigned char)x)
#define sa_strcoll(x, y) strcoll(x, y)
#define sa_strpbrk(x, y) strpbrk(x, y)
#define sa_strrchr(x, y) strrchr(x, y)
#define sa_strtol(x, y, z) strtol(x, y, z)
#define sa_strtoul(x, y, z) strtoul(x, y, z)
#define sa_strtod(x, y) strtod(x, y)
#define sa_toi(x) atoi(x)
#define sa_tol(x) atol(x)
#define sa_vsprintf(x, y, z) vsprintf(x, y, z)
#define sa_sprintf sprintf
#define sa_csinc(x) (++(x))
#define sa_clen(x) (1)
#endif
struct SAStringConvertedData
{
int nDataLength; // length of converted data (including terminator)
// !SAChar ConvertedData[nDataLength+1]
#ifdef SA_UNICODE
char *data() // char * to converted data
{ return (char *)(this+1); }
#else // !SA_UNICODE
wchar_t *data() // wchar_t * to converted data
{ return (wchar_t *)(this+1); }
#endif //!SA_UNICODE
};
struct SAStringData
{
SAStringConvertedData *pConvertedData; // pointer to converted data, if any
#ifdef SA_UNICODE
// nDataLength*sizeof(SAChar) - real length of binary data
// also true: nLengthInBytes % sizeof(SAChar)
// In bytes [0..sizeof(SAChar)-1]
int nBinaryDataLengthDiff;
#endif // SA_UNICODE
long nRefs; // reference count
int nDataLength; // length of data (including terminator)
int nAllocLength; // length of allocation
// SAChar data[nAllocLength]
SAChar *data() // SAChar * to managed data
{ return (SAChar *)(this+1); }
};
class SQLAPI_API SAString
{
public:
// Constructors
// constructs empty SAString
SAString();
// copy constructor
SAString(const SAString &stringSrc);
// from a single character
SAString(SAChar ch, int nRepeat = 1);
// from an ANSI (multibyte) string (converts to SAChar)
SAString(const char *lpsz);
// from a UNICODE string (converts to SAChar)
SAString(const wchar_t *lpsz);
// subset of characters from an ANSI (multibyte) string (converts to SAChar)
SAString(const char *lpch, int nLength);
// subset of characters from a UNICODE string (converts to SAChar)
SAString(const wchar_t *lpch, int nLength);
// from unsigned characters (converts to SAChar)
SAString(const unsigned char *psz);
// special constructor for binary data (no converion to SAChar)
SAString(const void *pBuffer, int nLengthInBytes);
// Attributes & Operations
// get data length (in characters)
int GetLength() const;
// true if zero length
bool IsEmpty() const;
// clear contents to empty
void Empty();
// return pointer to const string
operator const SAChar *() const;
// overloaded assignment
// ref-counted copy from another SAString
const SAString &operator =(const SAString &sSrc);
// set string content to single character
const SAString &operator=(SAChar ch);
#ifdef SA_UNICODE
const SAString &operator=(char ch);
#endif
// copy string content from ANSI (multibyte) string (converts to SAChar)
const SAString &operator=(const char *lpsz);
// copy string content from UNICODE string (converts to SAChar)
const SAString &operator=(const wchar_t *lpsz);
// copy string content from unsigned chars
const SAString &operator=(const unsigned char *psz);
// string concatenation
// concatenate from another SAString
const SAString &operator+=(const SAString &string);
// concatenate a single character
const SAString &operator+=(SAChar ch);
#ifdef SA_UNICODE
// concatenate an ANSI character after converting it to SAChar
const SAString &operator+=(char ch);
#endif
// concatenate from a SAChar string
const SAString &operator+=(const SAChar *lpsz);
friend SAString SQLAPI_API operator+(const SAString &string1, const SAString &string2);
friend SAString SQLAPI_API operator+(const SAString &string, SAChar ch);
friend SAString SQLAPI_API operator+(SAChar ch, const SAString &string);
#ifdef SA_UNICODE
friend SAString SQLAPI_API operator+(const SAString &string, char ch);
friend SAString SQLAPI_API operator+(char ch, const SAString &string);
#endif
friend SAString SQLAPI_API operator+(const SAString &string, const SAChar *lpsz);
friend SAString SQLAPI_API operator+(const SAChar *lpsz, const SAString &string);
// string comparison
// straight character comparison
int Compare(const SAChar *lpsz) const;
// compare ignoring case
int CompareNoCase(const SAChar *lpsz) const;
// NLS aware comparison, case sensitive
int Collate(const SAChar *lpsz) const;
// simple sub-string extraction
// return all characters starting at zero-based nFirst
SAString Mid(int nFirst) const;
// return nCount characters starting at zero-based nFirst
SAString Mid(int nFirst, int nCount) const;
// return first nCount characters in string
SAString Left(int nCount) const;
// return nCount characters from end of string
SAString Right(int nCount) const;
// trimming whitespace (either side)
// remove whitespace starting from right edge
void TrimRight();
// remove whitespace starting from left side
void TrimLeft();
// trimming anything (either side)
// remove continuous occurrences of chTarget starting from right
void TrimRight(SAChar chTarget);
// remove continuous occcurrences of characters in passed string,
// starting from right
void TrimRight(const SAChar *lpszTargets);
// remove continuous occurrences of chTarget starting from left
void TrimLeft(SAChar chTarget);
// remove continuous occcurrences of characters in
// passed string, starting from left
void TrimLeft(const SAChar *lpszTargets);
// advanced manipulation
// replace occurrences of substring lpszOld with lpszNew;
// empty lpszNew removes instances of lpszOld
int Replace(const SAChar *lpszOld, const SAChar *lpszNew);
// insert character at zero-based index; concatenates
// if index is past end of string
int Insert(int nIndex, SAChar ch);
// insert substring at zero-based index; concatenates
// if index is past end of string
int Insert(int nIndex, const SAChar *pstr);
// delete nCount characters starting at zero-based index
int Delete(int nIndex, int nCount = 1);
// searching
// find character starting at left, -1 if not found
int Find(SAChar ch) const;
// find character starting at right
int ReverseFind(SAChar ch) const;
// find character starting at zero-based index and going right
int Find(SAChar ch, int nStart) const;
// find first instance of any character in passed string
int FindOneOf(const SAChar *lpszCharSet) const;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -