SQL: SQL e tipos de dados C++ (ODBC)

ObservaçãoObservação

Essas informações se aplicam às classes de ODBC do MFC.Se você estiver trabalhando com as classes MFC DAO, consulte o tópico "Comparação do Microsoft Jet banco de dados mecanismo SQL e ANSI SQL" na Ajuda do DAO.

A tabela a seguir mapeia tipos de dados SQL de ANSI para tipos de dados C++.Isso amplia as informações da linguagem c fornecidas no Apêndice D do ODBC SDKreferência do programador de no CD do Biblioteca MSDN.Os assistentes para gerenciam mais 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 do campo exchange 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

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 ODBC padrão.

2.Dados de caracteres, além de 255 caracteres são truncados por padrão quando mapeado para CString.Você pode estender o comprimento do truncamento explicitamente definindo o nMaxLength argumento de RFX_Text.

3.Dados binários, além de 255 caracteres são truncados por padrão quando mapeado para CByteArray.Você pode estender o comprimento do truncamento explicitamente definindo o nMaxLength argumento de RFX_Binary.

Se você não estiver usando a biblioteca de cursor ODBC, você pode encontrar um problema ao tentar atualizar dois 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 texto e tipos de SQL Server de imagem.A CDBException é lançada se você atualizar 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árias colunas longas simultaneamente com a API ODBC SQLPutData.Você também pode usar a biblioteca de cursor ODBC, mas isso não é recomendado para os drivers, como o driver SQL Server, que oferecem suporte a cursores não precisam de biblioteca de cursor.

Se você estiver usando a biblioteca de cursor ODBC com as classes de banco de dados ODBC do MFC e o driver de 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 é não usar a biblioteca de cursor ODBC, porque SQL Server e o driver ODBC de SQL Server fornecem suporte nativo para cursores nativamente e a biblioteca de cursor ODBC não é necessária.

Consulte também

Conceitos

SQL

SQL: Fazendo chamadas diretas de SQL (ODBC)