Partilhar via


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

ObservaçãoObservaçã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.

Consulte também

Conceitos

SQL

SQL: Fazer chamadas diretas de SQL (ODBC)