Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Essas informações se aplicam às classes ODBC do MFC. Se você estiver trabalhando com as classes MFC DAO, consulte o tópico "Comparação do Microsoft Jet Database Engine SQL e ANSI SQL" na Ajuda do DAO.
A tabela a seguir mapeia tipos de dados ANSI SQL para tipos de dados C++. Isto aumenta as informações da linguagem C fornecidas no Apêndice D da documentação de Referência do Programador do ODBC. Os assistentes gerenciam a maioria dos mapeamentos de tipos de dados para você. Se você não usar um assistente, poderá usar as informações de mapeamento para ajudá-lo a escrever o código de troca de campo manualmente.
Tipos de dados ANSI SQL mapeados para tipos de dados C++
| Tipo de dados ANSI SQL | Tipo de dados C++ |
|---|---|
| CHAR | CString |
| Decimal |
CString 1 |
| SMALLINT | int |
| REAL | float |
| INTEIRO | long |
| FLUTUAR | double |
| DUPLO | double |
| NUMÉRICO |
CString 1 |
| VARCHAR | CString |
| LONGVARCHAR |
CLongBinary, CString 2 |
| POUCO | BOOL |
| TINYINT | BYTE |
| BIGINT |
CString 1 |
| BINÁRIO | CByteArray |
| VARBINARY | CByteArray |
| LONGVARBINARY |
CLongBinary, CByteArray 3 |
| DATA |
CTime, CString |
| TEMPO |
CTime, CString |
| CARIMBO DE DATA/HORA |
CTime, CString |
ANSI DECIMAL e NUMERIC mapeiam para
CStringporque SQL_C_CHAR é o tipo de transferência ODBC padrão.Os dados de caracteres além de 255 caracteres são truncados por padrão quando mapeados para
CString. Você pode estender o comprimento do truncamento definindo explicitamente o argumento nMaxLength deRFX_Text.Dados binários além de 255 caracteres são truncados por padrão quando mapeados para
CByteArray. Você pode estender o comprimento do truncamento definindo explicitamente o argumento nMaxLength deRFX_Binary.
Se você não estiver usando a biblioteca de cursores ODBC, poderá encontrar um problema ao tentar atualizar dois ou mais campos longos de comprimento variável usando o driver ODBC do Microsoft SQL Server e as classes de banco de dados ODBC do MFC. Os tipos ODBC, SQL_LONGVARCHAR e SQL_LONGVARBINARY, são mapeados para tipos de texto e imagem do SQL Server. A CDBException é lançado se você atualizar dois ou mais campos longos de comprimento variável na mesma chamada para CRecordset::Update. Portanto, não atualize várias colunas longas simultaneamente com CRecordset::Update. Você pode atualizar várias colunas longas simultaneamente com a API SQLPutDataODBC. Você também pode usar a biblioteca de cursores ODBC, mas isso não é recomendado para drivers, como o driver do SQL Server, que suportam cursores e não precisam da biblioteca de cursores.
Se estiver a usar a biblioteca de cursores ODBC com as classes de base de dados ODBC MFC e o driver ODBC do Microsoft SQL Server, um ASSERT pode ocorrer juntamente com um CDBException se uma chamada para CRecordset::Update seguir uma chamada para CRecordset::Requery. Em vez disso, ligue CRecordset::Close e CRecordset::Open em vez de CRecordset::Requery. Outra solução é não usar a biblioteca de cursores ODBC, porque o SQL Server e o driver ODBC do SQL Server fornecem suporte nativo para cursores nativamente e a biblioteca de cursores ODBC não é necessária.