SQL: SQL e tipos de dados C++ (ODBC)
Observação |
---|
Essas informações se aplicam às classes MFC ODBC. Se você estiver trabalhando com as classes do MFC DAO, consulte o tópico "Comparação do Microsoft Jet banco de dados do mecanismo de SQL e ANSI SQL" na Ajuda do DAO. |
A tabela a seguir mapeia os tipos de dados de SQL de ANSI para tipos de dados do C++. Isso amplia as informações de linguagem C, fornecidas no Apêndice D da odbc sdk referência do programador no CD de Biblioteca MSDN. Os assistentes para gerenciam a maioria dos mapeamento de tipo de dados para você. Se você não usar um assistente, você pode usar as informações de mapeamento para ajudá-lo a escrever o código de campo exchange manualmente.
Tipos de dados SQL de ANSI mapeados para tipos de dados C++
Tipo de dados ANSI SQL |
C++ data type |
---|---|
CHAR |
CString |
DECIMAL |
CString 1 |
SMALLINT |
int |
REAL |
float |
INTEIRO |
long |
FLOAT |
double |
DUPLO |
double |
NUMÉRICO |
CString 1 |
VARCHAR |
CString |
LONGVARCHAR |
CLongBinary, CString 2 |
BIT |
BOOL |
TINYINT |
BYTE |
BIGINT |
CString 1 |
BINÁRIO |
CByteArray |
VARBINARY |
CByteArray |
LONGVARBINARY |
CLongBinary, CByteArray 3 |
DATA |
CTime, CString |
TEMPO |
CTime, CString |
CARIMBO DE HORA |
CTime, CString |
1. ANSI DECIMAL e numéricos mapear para CString porque SQL_C_CHAR é o tipo de transferência do padrão ODBC.
2. Dados de caracteres, além de 255 caracteres estão truncados por padrão quando mapeado para CString. Você pode estender o comprimento de truncamento explicitamente definindo o nMaxLength o argumento de RFX_Text.
3. Dados binários, além de 255 caracteres estão truncados por padrão quando mapeado para CByteArray. Você pode estender o comprimento de truncamento explicitamente definindo o nMaxLength o argumento de RFX_Binary.
Se você não estiver usando a biblioteca de cursores ODBC, você pode encontrar um problema ao tentar atualizar duas ou mais campos de comprimento variável longo 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, mapear para o texto e os tipos de SQL Server de imagem. A CDBException é lançada se você atualizar os dois ou mais campos de comprimento variável longo na mesma chamada CRecordset::Update. Portanto, não atualizar vários longas colunas simultaneamente com CRecordset::Update. Você pode atualizar vários longas colunas simultaneamente com a API ODBC SQLPutData. Você também pode usar a biblioteca de cursores ODBC, mas isso não é recomendado para os drivers, como o driver SQL Server, suportam a cursores e não precisam da biblioteca de cursor.
Se você estiver usando a biblioteca de cursores ODBC com as classes de banco de dados ODBC do MFC e o driver ODBC do Microsoft SQL Server, um ASSERT pode ocorrer juntamente com um CDBException se uma chamada para CRecordset::Update segue uma chamada para CRecordset::Requery. Em vez disso, chame CRecordset::Close e CRecordset::Open em vez de CRecordset::Requery. Outra solução é para não usar a biblioteca de cursor 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.