SqlTypes.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //-----------------------------------------------------------------------------
  2. // File: sqltypes.h
  3. //
  4. // Copyright: Copyright (c) Microsoft Corporation          
  5. //
  6. // Contents:  This file defines the types used in ODBC
  7. //
  8. // Comments: 
  9. //
  10. //-----------------------------------------------------------------------------
  11. #ifndef __SQLTYPES
  12. #define __SQLTYPES
  13. /* if ODBCVER is not defined, assume version 3.51 */
  14. #ifndef ODBCVER
  15. #define ODBCVER 0x0351
  16. #endif  /* ODBCVER */
  17. #ifdef __cplusplus
  18. extern "C" {  /* Assume C declarations for C++   */
  19. #endif  /* __cplusplus */
  20. /* environment specific definitions */
  21. #ifndef EXPORT
  22. #define EXPORT   
  23. #endif
  24. #ifdef WIN32
  25. #define SQL_API  __stdcall
  26. #else
  27. #define SQL_API
  28. #endif
  29. #ifndef RC_INVOKED
  30. /* API declaration data types */
  31. typedef unsigned char   SQLCHAR;
  32. #if (ODBCVER >= 0x0300)
  33. typedef signed char     SQLSCHAR;
  34. typedef unsigned char   SQLDATE;
  35. typedef unsigned char   SQLDECIMAL;
  36. typedef double          SQLDOUBLE;
  37. typedef double          SQLFLOAT;
  38. #endif
  39. typedef long            SQLINTEGER;
  40. typedef unsigned long   SQLUINTEGER;
  41. #ifdef _WIN64
  42. typedef INT64           SQLLEN;
  43. typedef UINT64          SQLULEN;
  44. typedef UINT64          SQLSETPOSIROW;
  45. #else
  46. #define SQLLEN          SQLINTEGER
  47. #define SQLULEN         SQLUINTEGER
  48. #define SQLSETPOSIROW   SQLUSMALLINT
  49. #endif
  50. //For Backward compatibility
  51. #ifdef WIN32
  52. typedef SQLULEN SQLROWCOUNT;
  53. typedef SQLULEN SQLROWSETSIZE;
  54. typedef SQLULEN SQLTRANSID;
  55. typedef SQLLEN SQLROWOFFSET;
  56. #endif
  57. #if (ODBCVER >= 0x0300)
  58. typedef unsigned char   SQLNUMERIC;
  59. #endif
  60. typedef void *          SQLPOINTER;
  61. #if (ODBCVER >= 0x0300)
  62. typedef float           SQLREAL;
  63. #endif
  64. typedef short           SQLSMALLINT;
  65. typedef unsigned short  SQLUSMALLINT;
  66. #if (ODBCVER >= 0x0300)
  67. typedef unsigned char   SQLTIME;
  68. typedef unsigned char   SQLTIMESTAMP;
  69. typedef unsigned char   SQLVARCHAR;
  70. #endif
  71. /* function return type */
  72. typedef SQLSMALLINT     SQLRETURN;
  73. /* generic data structures */
  74. #if (ODBCVER >= 0x0300)
  75. #if defined(WIN32) || defined(_WIN64)
  76. typedef void* SQLHANDLE;
  77. #else
  78. typedef SQLINTEGER              SQLHANDLE;
  79. #endif /* defined(WIN32) || defined(_WIN64) */
  80. typedef SQLHANDLE               SQLHENV;
  81. typedef SQLHANDLE               SQLHDBC;
  82. typedef SQLHANDLE               SQLHSTMT;
  83. typedef SQLHANDLE               SQLHDESC;
  84. #else //ODBCVER < 0x0300
  85. #if defined(WIN32) || defined(_WIN64)
  86. typedef void* SQLHENV;
  87. typedef void* SQLHDBC;
  88. typedef void* SQLHSTMT;
  89. #else
  90. typedef SQLINTEGER              SQLHENV;
  91. typedef SQLINTEGER              SQLHDBC;
  92. typedef SQLINTEGER              SQLHSTMT;
  93. #endif  /* defined(WIN32) || defined(_WIN64) */
  94. #endif /* ODBCVER >= 0x0300 */
  95. /* SQL portable types for C */
  96. typedef unsigned char           UCHAR;
  97. typedef signed char             SCHAR;
  98. typedef SCHAR                   SQLSCHAR;
  99. typedef long int                SDWORD;
  100. typedef short int               SWORD;
  101. typedef unsigned long int       UDWORD;
  102. typedef unsigned short int      UWORD;
  103. #ifndef _WIN64
  104. typedef UDWORD                  SQLUINTEGER;
  105. #endif
  106. typedef signed long             SLONG;
  107. typedef signed short            SSHORT;
  108. typedef unsigned long           ULONG;
  109. typedef unsigned short          USHORT;
  110. typedef double                  SDOUBLE;
  111. typedef double             LDOUBLE; 
  112. typedef float                   SFLOAT;
  113. typedef void*               PTR;
  114. typedef void*               HENV;
  115. typedef void*               HDBC;
  116. typedef void*               HSTMT;
  117. typedef signed short            RETCODE;
  118. #if defined(WIN32) || defined(OS2)
  119. typedef HWND                    SQLHWND;
  120. #elif defined (UNIX)
  121. typedef Widget                  SQLHWND;
  122. #else
  123. /* placehold for future O/S GUI window handle definition */
  124. typedef SQLPOINTER              SQLHWND;
  125. #endif
  126. #ifndef __SQLDATE
  127. #define __SQLDATE
  128. /* transfer types for DATE, TIME, TIMESTAMP */
  129. typedef struct tagDATE_STRUCT
  130. {
  131.         SQLSMALLINT    year;
  132.         SQLUSMALLINT   month;
  133.         SQLUSMALLINT   day;
  134. } DATE_STRUCT;
  135. #if (ODBCVER >= 0x0300)
  136. typedef DATE_STRUCT SQL_DATE_STRUCT;
  137. #endif  /* ODBCVER >= 0x0300 */
  138. typedef struct tagTIME_STRUCT
  139. {
  140.         SQLUSMALLINT   hour;
  141.         SQLUSMALLINT   minute;
  142.         SQLUSMALLINT   second;
  143. } TIME_STRUCT;
  144. #if (ODBCVER >= 0x0300)
  145. typedef TIME_STRUCT SQL_TIME_STRUCT;
  146. #endif /* ODBCVER >= 0x0300 */
  147. typedef struct tagTIMESTAMP_STRUCT
  148. {
  149.         SQLSMALLINT    year;
  150.         SQLUSMALLINT   month;
  151.         SQLUSMALLINT   day;
  152.         SQLUSMALLINT   hour;
  153.         SQLUSMALLINT   minute;
  154.         SQLUSMALLINT   second;
  155.         SQLUINTEGER    fraction;
  156. } TIMESTAMP_STRUCT;
  157. #if (ODBCVER >= 0x0300)
  158. typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
  159. #endif  /* ODBCVER >= 0x0300 */
  160. /*
  161.  * enumerations for DATETIME_INTERVAL_SUBCODE values for interval data types
  162.  * these values are from SQL-92
  163.  */
  164. #if (ODBCVER >= 0x0300)
  165. typedef enum 
  166. {
  167. SQL_IS_YEAR = 1,
  168. SQL_IS_MONTH = 2,
  169. SQL_IS_DAY = 3,
  170. SQL_IS_HOUR = 4,
  171. SQL_IS_MINUTE = 5,
  172. SQL_IS_SECOND = 6,
  173. SQL_IS_YEAR_TO_MONTH = 7,
  174. SQL_IS_DAY_TO_HOUR = 8,
  175. SQL_IS_DAY_TO_MINUTE = 9,
  176. SQL_IS_DAY_TO_SECOND = 10,
  177. SQL_IS_HOUR_TO_MINUTE = 11,
  178. SQL_IS_HOUR_TO_SECOND = 12,
  179. SQL_IS_MINUTE_TO_SECOND = 13
  180. } SQLINTERVAL;
  181. #endif  /* ODBCVER >= 0x0300 */
  182. #if (ODBCVER >= 0x0300)
  183. typedef struct tagSQL_YEAR_MONTH
  184. {
  185. SQLUINTEGER year;
  186. SQLUINTEGER month;
  187. } SQL_YEAR_MONTH_STRUCT;
  188. typedef struct tagSQL_DAY_SECOND
  189. {
  190. SQLUINTEGER day;
  191. SQLUINTEGER hour;
  192. SQLUINTEGER minute;
  193. SQLUINTEGER second;
  194. SQLUINTEGER fraction;
  195. } SQL_DAY_SECOND_STRUCT;
  196. typedef struct tagSQL_INTERVAL_STRUCT
  197. {
  198. SQLINTERVAL interval_type;
  199. SQLSMALLINT interval_sign;
  200. union {
  201. SQL_YEAR_MONTH_STRUCT year_month;
  202. SQL_DAY_SECOND_STRUCT day_second;
  203. } intval;
  204. } SQL_INTERVAL_STRUCT;
  205. #endif  /* ODBCVER >= 0x0300 */
  206. #endif /* __SQLDATE */
  207. /* the ODBC C types for SQL_C_SBIGINT and SQL_C_UBIGINT */
  208. #if (ODBCVER >= 0x0300)
  209. #if (_MSC_VER >= 900)
  210. #define ODBCINT64 __int64
  211. #endif  
  212. /* If using other compilers, define ODBCINT64 to the 
  213. approriate 64 bit integer type */
  214. #ifdef ODBCINT64
  215. typedef ODBCINT64 SQLBIGINT;
  216. typedef unsigned ODBCINT64 SQLUBIGINT;
  217. #endif
  218. #endif  /* ODBCVER >= 0x0300 */
  219. /* internal representation of numeric data type */
  220. #if (ODBCVER >= 0x0300)
  221. #define SQL_MAX_NUMERIC_LEN 16
  222. typedef struct tagSQL_NUMERIC_STRUCT
  223. {
  224. SQLCHAR precision;
  225. SQLSCHAR scale;
  226. SQLCHAR sign; /* 1 if positive, 0 if negative */
  227. SQLCHAR val[SQL_MAX_NUMERIC_LEN];
  228. } SQL_NUMERIC_STRUCT;
  229. #endif  /* ODBCVER >= 0x0300 */
  230. #if (ODBCVER >= 0x0350)
  231. #ifdef GUID_DEFINED
  232. typedef GUID SQLGUID;
  233. #else
  234. /* size is 16 */
  235. typedef struct  tagSQLGUID
  236. {
  237.     DWORD Data1;
  238.     WORD Data2;
  239.     WORD Data3;
  240.     BYTE Data4[ 8 ];
  241. } SQLGUID;
  242. #endif  /* GUID_DEFINED */
  243. #endif  /* ODBCVER >= 0x0350 */
  244. typedef SQLULEN         BOOKMARK;
  245. #ifdef _WCHAR_T_DEFINED
  246. typedef wchar_t SQLWCHAR;
  247. #else
  248. typedef unsigned short SQLWCHAR;
  249. #endif
  250. #ifdef UNICODE
  251. typedef SQLWCHAR        SQLTCHAR;
  252. #else
  253. typedef SQLCHAR         SQLTCHAR;
  254. #endif  /* UNICODE */
  255. #endif     /* RC_INVOKED */
  256. #ifdef __cplusplus
  257. }                                    /* End of extern "C" { */
  258. #endif  /* __cplusplus */
  259. #endif /* #ifndef __SQLTYPES */