使用 SQLBindCol、SQLBindParameter 或 SQLGetData 时,将为列或参数指定 C 数据类型。在某些平台上,提供给每列的存储(内存)必须正确对齐,才能读取或存储指定类型的值。ODBC 驱动程序检查数据是否正确对齐。当对象没有正确对齐时,ODBC 驱动程序会发布 [无效的字符串或缓冲区长度] 消息 ([SQLSTATE] HY090 或 S1090)。
下表列出了诸如 Sun Sparc、Itanium-IA64 和基于 ARM 的设备之类的处理器的内存对齐要求。数据值内存地址必须是指示值的倍数。
C 数据类型 | 需要的对齐方式 |
---|---|
SQL_C_CHAR | 无 |
SQL_C_BINARY | 无 |
SQL_C_GUID | 无 |
SQL_C_BIT | 无 |
SQL_C_STINYINT | 无 |
SQL_C_UTINYINT | 无 |
SQL_C_TINYINT | 无 |
SQL_C_NUMERIC | 无 |
SQL_C_DEFAULT | 无 |
SQL_C_SSHORT | 2 |
SQL_C_USHORT | 2 |
SQL_C_SHORT | 2 |
SQL_C_DATE | 2 |
SQL_C_TIME | 2 |
SQL_C_TIMESTAMP | 2 |
SQL_C_TYPE_DATE | 2 |
SQL_C_TYPE_TIME | 2 |
SQL_C_TYPE_TIMESTAMP | 2 |
SQL_C_WCHAR | 2(在所有平台上,缓冲区大小必须是 2 的倍数) |
SQL_C_SLONG | 4 |
SQL_C_ULONG | 4 |
SQL_C_LONG | 4 |
SQL_C_FLOAT | 4 |
SQL_C_DOUBLE | 8(对于 ARM,采用 4) |
SQL_C_SBIGINT | 8 |
SQL_C_UBIGINT | 8 |
x86、x64 和 PowerPC 平台不需要内存对齐。x64 平台包括 Advanced Micro Devices (AMD) AMD64 处理器和 Intel Extended Memory 64 Technology (EM64T) 处理器。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |