Partilhar via


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

Dica

Essas informações são aplicadas às classes de MFC ODBC.Se você estiver trabalhando com as classes de MFC DAO, consulte o tópico “comparação do Microsoft Jet Mecanismo de Base de dados SQL e ANSI SQL” na ajuda de DAO.

A tabela a seguir mapeia os tipos de dados SQL ANSI para tipos de dados C++. Isso aumenta as informações da linguagem C fornecida no Apêndice D do ODBC SDK Referência do Programador no CD da Biblioteca MSDN. Os assistentes gerenciam a maioria de mapeamento de tipo de dados. Se você não usar um assistente, você pode usar as informações de mapeamento para ajudar a escrever manualmente o código de troca do campo.

Tipos de dados SQL ANSI mapeados para tipos de dados do C++

Tipo de dados SQL ANSI

Tipo de dado em C++

CHAR

CString

DECIMAL

CString 1

SMALLINT

int

REAL

float

INTEGER

long

FLOAT

double

DOUBLE

double

NUMERIC

CString 1

VARCHAR

CString

LONGVARCHAR

CLongBinary, CString 2

BIT

BOOL

TINYINT

BYTE

BIGINT

CString 1

BINARY

CByteArray

VARBINARY

CByteArray

LONGVARBINARY

CLongBinary, CByteArray 3

DATE

CTime, CString

TIME

CTime, CString

TIMESTAMP

CTime, CString

1. Mapa de ANSI DECIMAL e de NUMERIC a CString porque SQL_C_CHAR é o tipo de transferência do ODBC da opção.

2. Os dados de caracteres que excede 255 caracteres serão truncados por padrão quando mapeados para CString. Você pode estender o comprimento de truncamento definindo explicitamente o argumento de nMaxLength de RFX_Text.

3. Os dados binários além de 255 caracteres serão truncados por padrão quando mapeados para CByteArray. Você pode estender o comprimento de truncamento definindo explicitamente o argumento de nMaxLength de RFX_Binary.

Se você não estiver usando a biblioteca de cursores ODBC, poderá encontrar um problema ao tentar atualizar campos de comprimento variável duas ou mais longos usando o driver ODBC do Microsoft SQL Server e classes de base de dados de MFC ODBC. Os tipos de ODBC, SQL_LONGVARCHAR e SQL_LONGVARBINARY, o mapa em texto e imagem tipos do SQL Server. CDBException será lançada se você atualiza campos de comprimento variável duas ou mais longos na mesma chamada a CRecordset::Update. Consequentemente, não atualizar várias colunas longas 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 cursores ODBC, mas isso não é recomendado para os drivers, como o driver do SQL Server, que oferecem suporte a cursores e não precisam da biblioteca de cursores.

Se você estiver usando a biblioteca de cursores ODBC com as classes da base de dados de MFC ODBC e o driver ODBC do Microsoft SQL Server, DECLARAR pode acontecer juntos com CDBException se uma chamada a CRecordset::Update segue uma chamada a 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 cursores ODBC, como o SQL Server e o driver ODBC do SQL Server fornece suporte nativo para cursores de maneira nativa e a biblioteca de cursores ODBC não é necessária.

Consulte também

Conceitos

SQL

SQL: fazendo chamadas SQL diretas (ODBC)