참고
이 정보는 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 |
| 십진법 |
CString 1 |
| SMALLINT | int |
| 레알 | float |
| 정수 | long |
| 플로트 | double |
| 더블 | double |
| 숫자 |
CString 1 |
| VARCHAR | CString |
| LONGVARCHAR |
CLongBinary, CString 2 |
| 비트 | BOOL |
| TINYINT (1바이트 정수 데이터 타입) | 바이트 |
| BIGINT |
CString 1 |
| 바이너리 | CByteArray |
| VARBINARY | CByteArray |
| LONGVARBINARY |
CLongBinary, CByteArray 3 |
| 날짜 |
CTime, CString |
| 시간 |
CTime, CString |
| 타임 스탬프 |
CTime, CString |
ANSI DECIMAL 및 NUMERIC은
CString에 매핑됩니다. 이는 SQL_C_CHAR이 기본 ODBC 전송 형식이기 때문입니다.255자를 초과하는 문자 데이터는 매핑
CString될 때 기본적으로 잘립니다.RFX_Text의 nMaxLength 인수를 명시적으로 설정하여 잘라내는 길이를 확장할 수 있습니다.255자를 초과하는 이진 데이터는 매핑
CByteArray될 때 기본적으로 잘립니다. nMaxLength 인수를 설정하여 잘림 길이를 확장할 수 있습니다.
ODBC 커서 라이브러리를 사용하지 않는 경우 Microsoft SQL Server ODBC 드라이버 및 MFC ODBC 데이터베이스 클래스를 사용하여 둘 이상의 긴 가변 길이 필드를 업데이트하려고 할 때 문제가 발생할 수 있습니다. SQL_LONGVARCHAR 및 SQL_LONGVARBINARY ODBC 형식은 텍스트 및 이미지 SQL Server 형식에 매핑됩니다. 동일한 호출에서 두 개 이상의 긴 가변 길이 필드를 업데이트하는 경우 CRecordset::Update에서 A CDBException이(가) 발생합니다. 따라서 여러 긴 열을 CRecordset::Update동시에 업데이트하지 마세요. 여러 긴 열을 ODBC API SQLPutData와 동시에 업데이트할 수 있습니다. ODBC 커서 라이브러리를 사용할 수도 있지만 커서를 지원하고 커서 라이브러리가 필요하지 않은 SQL Server 드라이버와 같은 드라이버에는 권장되지 않습니다.
ODBC 커서 라이브러리를 MFC ODBC 데이터베이스 클래스와 Microsoft SQL Server ODBC 드라이버와 함께 사용하는 경우, CRecordset::Requery 호출 이후 CRecordset::Update 호출이 발생하면 CDBException과 함께 ASSERT가 발생할 수 있습니다. 대신 호출하고 대신 CRecordset::Close호출 CRecordset::Open 합니다CRecordset::Requery. SQL Server 및 SQL Server ODBC 드라이버는 기본적으로 커서를 기본적으로 지원하고 ODBC 커서 라이브러리는 필요하지 않으므로 다른 솔루션은 ODBC 커서 라이브러리를 사용하지 않는 것입니다.