SQL: SQL 및 C++ 데이터 형식(ODBC)
참고 항목
이 정보는 MFC ODBC 클래스에 적용됩니다. MFC DAO 클래스를 사용하여 작업하는 경우 DAO 도움말의 “Microsoft Jet Database Engine SQL과 ANSI SQL 비교” 항목을 참조하세요.
다음 표에서는 ANSI SQL 데이터 형식을 C++ 데이터 형식에 매핑합니다. 이렇게 하면 ODBC 프로그래머 참조 설명서의 부록 D에 제공된 C 언어 정보가 보강됩니다. 마법사는 대부분의 데이터 형식 매핑을 관리합니다. 마법사를 사용하지 않는 경우 매핑 정보를 사용하여 필드 교환 코드를 수동으로 작성할 수 있습니다.
C++ 데이터 형식에 매핑된 ANSI SQL 데이터 형식
ANSI SQL 데이터 형식 | C++ 데이터 형식 |
---|---|
CHAR | CString |
DECIMAL | CString 1 |
SMALLINT | int |
REAL | float |
정수 | long |
FLOAT | double |
DOUBLE | double |
숫자 | 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 |
시간 | CTime , CString |
TIMESTAMP | CTime , CString |
ANSI DECIMAL 및 NUMERIC 맵
CString
은 SQL_C_CHAR 기본 ODBC 전송 형식이기 때문입니다.255자를 초과하는 문자 데이터는 매핑
CString
될 때 기본적으로 잘립니다. nMaxLength 인수RFX_Text
를 명시적으로 설정하여 잘림 길이를 확장할 수 있습니다.255자를 초과하는 이진 데이터는 매핑
CByteArray
될 때 기본적으로 잘립니다. nMaxLength 인수RFX_Binary
를 명시적으로 설정하여 잘림 길이를 확장할 수 있습니다.
ODBC 커서 라이브러리를 사용하지 않는 경우 Microsoft SQL Server ODBC 드라이버 및 MFC ODBC 데이터베이스 클래스를 사용하여 둘 이상의 긴 가변 길이 필드를 업데이트하려고 할 때 문제가 발생할 수 있습니다. SQL_LONGVARCHAR 및 SQL_LONGVARBINARY ODBC 형식은 텍스트 및 이미지 SQL Server 형식에 매핑됩니다. 동일한 호출에서 두 개 이상의 긴 가변 길이 필드를 업데이트하면 A CDBException
가 throw됩니다 CRecordset::Update
. 따라서 여러 긴 열을 CRecordset::Update
동시에 업데이트하지 마세요. 여러 긴 열을 ODBC API SQLPutData
와 동시에 업데이트할 수 있습니다. ODBC 커서 라이브러리를 사용할 수도 있지만 커서를 지원하고 커서 라이브러리가 필요하지 않은 SQL Server 드라이버와 같은 드라이버에는 권장되지 않습니다.
MFC ODBC 데이터베이스 클래스 및 Microsoft SQL Server ODBC 드라이버와 함께 ODBC 커서 라이브러리를 사용하는 경우 호출을 따르는 CRecordset::Requery
경우 CRecordset::Update
ASSERT가 발생할 CDBException
수 있습니다. 대신 호출하고 대신 CRecordset::Requery
호출 CRecordset::Close
합니다CRecordset::Open
. SQL Server 및 SQL Server ODBC 드라이버는 기본적으로 커서를 기본적으로 지원하고 ODBC 커서 라이브러리는 필요하지 않으므로 다른 솔루션은 ODBC 커서 라이브러리를 사용하지 않는 것입니다.