SQL: Tipos de C++ dados (ODBC) e SQL
Observação: |
---|
Essas informações se aplicam às classes MFC ODBC.Se você estiver trabalhando com as classes MFC DAO, consulte o tópico "Comparação do Microsoft Jet mecanismo de banco de dados SQL e ANSI SQL" na Ajuda do DAO. |
A tabela a seguir mapeia tipos de dados do ANSI SQL para os tipos de dados C++.This augments the C language information given in Appendix D of the ODBC SDK Programmer's Reference on the MSDN Library CD.Os assistentes de gerenciam a maioria dos mapeamento do tipo de dados para você.Se você não usar um assistente, você pode usar as informações de mapeamento para ajudar você a escrever o código de troca de campo manualmente.
Tipos de dados SQL ANSI mapeados para tipos de dados C++
Tipo de dados ANSI SQL |
Tipo de dado em C++ |
---|---|
CHAR |
CString |
DECIMAL |
CString 1 |
SMALLINT |
int |
REAL |
float |
NÚMERO 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 |
time |
CTime, CString |
CARIMBO DE DATA/HORA |
CTime, CString |
1.ANSI DECIMAL and NUMÉRICO map to CString porque SQL_C_CHAR é o tipo de transferência ODBC padrão.
2.Dados de caractere além de 255 caractere são truncados por padrão quando mapeados para CString. Você pode estender o comprimento de truncamento, explicitamente definindo o nMaxLength argumento de RFX_Text.
3.Dados binário com mais de 255 caracteres são truncados por padrão quando mapeados para CByteArray. Você pode estender o comprimento de truncamento, explicitamente definindo o nMaxLength argumento de RFX_Binary.
Se você não estiver usando a biblioteca de cursores ODBC, você pode encontrar um problema durante a tentativa de atualizar dois ou mais campos de comprimento variável longo usando o driver ODBC do Microsoft SQL servidor e as classes de banco de dados ODBC do MFC.Os tipos de ODBC, SQL_LONGVARCHAR and SQL_LONGVARBINARY, mapeie para texto e imagem tipos SQL servidor.A CDBException Se você atualização dois ou mais campos de comprimento variável longo na mesma telefonar CRecordset::Update. Portanto, não atualização várias colunas longas simultaneamente com CRecordset::Update. Você pode atualizar várias colunas longas simultaneamente com a ODBC API SQLPutData.Você também pode usar o ODBC biblioteca de cursores, mas isso não é recomendado para drivers, como o driver do SQL servidor, que dão suporte a cursores e não são necessário o biblioteca de cursores.
Se você estiver usando o ODBC cursor biblioteca com as classes de banco de dados ODBC do MFC e o driver ODBC do Microsoft SQL servidor, um DECLARAR pode ocorrer juntamente com um CDBException Se uma telefonar para CRecordset::Update segue uma telefonar para CRecordset::Requery. Em vez disso, chame CRecordset::Close e CRecordset::Open em vez de CRecordset::Requery. Outra solução é usar a biblioteca de cursores ODBC, pois o SQL servidor e o driver ODBC do SQL servidor fornecem suporte nativo para cursores nativamente e a biblioteca de cursores ODBC não é necessária.