Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Эта информация относится к классам ODBC библиотеки MFC. Если вы работаете с классами DAO MFC, см. тему "Сравнение SQL ядра СУБД Microsoft Jet и ANSI SQL" в справке DAO.
В следующей таблице сопоставляется типы данных ANSI SQL с типами данных C++ . Это расширяет сведения о языке C, приведенные в приложении D справочной документации программиста ODBC. Мастера управляют сопоставлением большинства типов данных. Если вы не используете мастер, вы можете использовать информацию о сопоставлении, чтобы создать код для обмена полями вручную.
Типы данных SQL ANSI, сопоставленные с типами данных C++
| Тип данных ANSI SQL | Тип данных в C++ |
|---|---|
| ОБУГЛИТЬ | CString |
| ДЕСЯТИЧНАЯ СИСТЕМА |
CString 1 |
| SMALLINT | int |
| РЕАЛЬНЫЙ | float |
| ЦЕЛОЕ ЧИСЛО | long |
| Флоат | double |
| двойной | double |
| ЧИСЛОВОЙ |
CString 1 |
| VARCHAR | CString |
| LONGVARCHAR |
CLongBinary, CString 2 |
| БИТ | BOOL |
| ТИНИНТ | БАЙТ |
| BIGINT |
CString 1 |
| ДВОИЧНЫЙ | CByteArray |
| VARBINARY | CByteArray |
| LONGVARBINARY |
CLongBinary, CByteArray 3 |
| ДАТА |
CTime, CString |
| ВРЕМЯ |
CTime, CString |
| TIMESTAMP |
CTime, CString |
ANSI DECIMAL и NUMERIC отображаются на
CString, так как SQL_C_CHAR является типом передачи ODBC по умолчанию.Символьные данные, превышающие 255 символов, усечены по умолчанию при сопоставлении с
CString. Вы можете увеличить длину усекаемого текста, явно задав аргумент nMaxLength дляRFX_Text.Двоичные данные, превышающие 255 символов, усечены по умолчанию при сопоставлении с
CByteArray. Вы можете расширить длину усечения, явно задав аргумент nMaxLength дляRFX_Binary.
Если вы не используете библиотеку курсоров ODBC, при попытке обновить два или более длинных поля переменной длины с помощью драйвера ODBC Microsoft SQL Server и классов базы данных ODBC MFC может возникнуть проблема. Типы ODBC, SQL_LONGVARCHAR и SQL_LONGVARBINARY, сопоставляются с типами SQL Server text и image. Если при одном вызове CRecordset::Update обновляются два или более длинных поля переменной длины, создается CDBException. Поэтому не обновляйте несколько длинных столбцов одновременно с CRecordset::Update. Можно обновить несколько длинных столбцов одновременно с API SQLPutDataODBC. Вы также можете использовать библиотеку курсоров ODBC, но это не рекомендуется для драйверов, таких как драйвер SQL Server, который поддерживает курсоры и не нуждается в библиотеке курсоров.
Если вы используете библиотеку курсоров ODBC с классами базы данных ODBC MFC и драйвером ODBC Microsoft SQL Server, может возникнуть ASSERT, если вызов CRecordset::Update следует за вызовом CRecordset::Requery. Вместо этого вызовите CRecordset::Close и CRecordset::Open, а не CRecordset::Requery. Другим решением является не использование библиотеки курсоров ODBC, так как SQL Server и драйвер ODBC SQL Server обеспечивают встроенную поддержку курсоров в собственном коде, а библиотека курсоров ODBC не требуется.