Partilhar via


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.

Consulte também

Conceitos

SQL

SQL: Fazendo chamadas SQL Direct (ODBC)