Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Эта информация относится к классам ODBC библиотеки MFC. Если вы работаете с классами DAO MFC, см. раздел "Сравнение Microsoft Jet ядро СУБД SQL и 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
. Вы можете расширить длину усечения, явно задав .Двоичные данные, превышающие 255 символов, усечены по умолчанию при сопоставлении с
CByteArray
. Вы можете расширить длину усечения, явно задав .
Если вы не используете библиотеку курсоров ODBC, при попытке обновить два или более длинных поля переменной длины с помощью драйвера ODBC Microsoft SQL Server и классов базы данных ODBC MFC может возникнуть проблема. Типы ODBC, SQL_LONGVARCHAR и SQL_LONGVARBINARY, сопоставляют с типами SQL Server и текстом. При CDBException
обновлении двух или более длинных полей переменной длины при одном вызове CRecordset::Update
создается исключение. Поэтому не обновляйте несколько длинных столбцов одновременно с CRecordset::Update
. Можно обновить несколько длинных столбцов одновременно с API SQLPutData
ODBC. Вы также можете использовать библиотеку курсоров ODBC, но это не рекомендуется для драйверов, таких как драйвер SQL Server, который поддерживает курсоры и не нуждается в библиотеке курсоров.
Если вы используете библиотеку курсоров ODBC с классами баз данных ODBC MFC и драйвером ODBC Microsoft SQL Server,то при вызове CDBException
CRecordset::Update
вызова может возникнуть CRecordset::Requery
утверждение. Вместо этого вызов и CRecordset::Close
CRecordset::Open
вместо CRecordset::Requery
него. Другим решением является не использование библиотеки курсоров ODBC, так как SQL Server и драйвер ODBC SQL Server обеспечивают встроенную поддержку курсоров в собственном коде, а библиотека курсоров ODBC не требуется.