注意
此信息适用于 MFC ODBC 类。 如果使用的是 MFC DAO 类,请参阅 DAO 帮助中的主题“Microsoft Jet 数据库引擎 SQL 和 ANSI SQL 的比较”。
下表将 ANSI SQL 数据类型映射到 C++ 数据类型。 这为 ODBC 程序员参考文档的附录 D 中提供的 C 语言信息给予了补充。 向导会为你管理大多数数据类型映射。 如果不使用向导,可以使用映射信息来帮助你手动编写字段交换代码。
映射到 C++ 数据类型的 ANSI SQL 数据类型
| ANSI SQL 数据类型 | C++ 数据类型 | 
|---|---|
| 煳 | CString | 
| DECIMAL | 
              CString 1 | 
| SMALLINT | int | 
| 真正 | float | 
| 整数 | long | 
| 浮 | double | 
| 加倍 | double | 
| 数值的 | 
              CString 1 | 
| VARCHAR | CString | 
| LONGVARCHAR | 
              CLongBinary、CString 2 | 
| 位 | BOOL | 
| TINYINT | 字节 | 
| BIGINT | 
              CString 1 | 
| 二进制 | CByteArray | 
| VARBINARY | CByteArray | 
| LONGVARBINARY | 
              CLongBinary、CByteArray 3 | 
| DATE | %> | 
| 时间 | %> | 
| 时间戳 | %> | 
ANSI DECIMAL 和 NUMERIC 映射到
CString,因为 SQL_C_CHAR 是默认 ODBC 传输类型。字符数据映射到
CString时,默认截断超过 255 个字符的数据。 可以通过显式设置 的 nMaxLengthRFX_Text参数来扩展截断长度。二进制数据映射到
CByteArray时,默认截断超过 255 个字符的数据。 可以通过显式设置 的 nMaxLengthRFX_Binary参数来扩展截断长度。
如果不使用 ODBC 游标库,则在尝试使用 Microsoft SQL Server ODBC 驱动程序和 MFC ODBC 数据库类更新两个或多个可变长度的长字段时,可能会遇到问题。 ODBC 类型(SQL_LONGVARCHAR 和 SQL_LONGVARBINARY)映射到文本和图像 SQL Server 类型。 如果在同一 CDBException 调用中更新两个或多个可变长度的长字段,则会引发 CRecordset::Update。 因此,不要使用 CRecordset::Update 同时更新多个长列。 可以使用 ODBC API SQLPutData 同时更新多个长列。 还可以使用 ODBC 游标库,但不建议将其用于支持游标且不需要游标库的驱动程序(如 SQL Server 驱动程序)。
如果将 ODBC 游标库与 MFC ODBC 数据库类和 Microsoft SQL Server ODBC 驱动程序一起使用,则如果调用  后调用 CDBException,ASSERTCRecordset::Update 可能会随 CRecordset::Requery 一起发生。 请改为调用 CRecordset::Close 和 CRecordset::Open 而不是 CRecordset::Requery。 另一种解决方案是不使用 ODBC 游标库,因为 SQL Server 和 SQL Server ODBC 驱动程序本机支持游标,不需要 ODBC 游标库。