다음을 통해 공유


유니코드 데이터

SQL 유니코드 데이터 형식은 기본적으로 DBMS에 유니코드에 있는 데이터를 설명하기 위해 제공됩니다. 애플리케이션이 유니코드 버퍼에 데이터를 바인딩할 수 있도록 C 유니코드 데이터 형식이 제공됩니다. 드라이버 관리자는 데이터를 유니코드 C 형식(SQL_C_WCHAR)에서 변환하여 ANSI 드라이버로 작동할 수 있습니다.

ODBC 3.0 또는 2.x 애플리케이션은 항상 ANSI 데이터 형식에 바인딩됩니다. 최적의 성능을 위해 ODBC 3.5 이상 애플리케이션은 SQL 열 형식이 ANSI인 경우 ANSI 데이터 C 형식에 바인딩하고 SQL 열 형식이 유니코드인 경우 유니코드 C 데이터 형식에 바인딩해야 합니다.

SQL 유니코드 형식 표시기가 SQL_WCHAR, SQL_WVARCHAR 및 SQL_WLONGVARCHAR. SQL_WCHAR 데이터에는 고정 문자열 길이가 있는 반면, SQL_WVARCHAR 선언된 최대값을 가진 가변 길이를 가지며 SQL_WLONGVARCHAR 데이터 원본에 따라 최대값이 있는 가변 길이를 가변합니다.

C 유니코드 형식 표시기가 SQL_C_WCHAR. 이는 각 SQL 유니코드 형식 표시기의 기본값입니다. 모든 SQL 형식을 SQL_C_WCHAR 변환할 수 있으며 SQL_C_WCHAR 모든 SQL 형식으로 변환할 수 있습니다. 애플리케이션은 다음 세 가지 방법 중 하나로 데이터를 검색할 수 있습니다.

  • 데이터를 SQL_C_CHAR 검색합니다.

  • 데이터를 SQL_C_WCHAR 검색합니다.

  • 데이터를 SQL_C_TCHAR 선언합니다. 애플리케이션이 유니코드 애플리케이션으로 컴파일되는 경우 SQL_C_WCHAR 삽입하거나 ANSI 애플리케이션으로 컴파일되는 경우 SQL_C_CHAR 삽입하는 매크로입니다.

SQL_C_TCHAR 함수에서 다음과 같이 선언됩니다.

SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_WCHAR, NameLen, 0, Name, 0, &Name)  

애플리케이션이 유니코드 애플리케이션 으로 컴파일되면 ValueType 인수가 SQL_C_TCHAR SQL_C_WCHAR 변경됩니다. 애플리케이션이 ANSI 애플리케이션 으로 컴파일되면 ValueType 인수가 SQL_C_CHAR 변경됩니다.

유니코드 드라이버는 여전히 SQL_CHAR 포함하여 ANSI 데이터 형식을 지원해야 합니다. 유니코드 드라이버로 작업하는 애플리케이션이 SQL_CHAR 바인딩하는 경우 드라이버 관리자는 SQL_CHAR 데이터를 SQL_WCHAR 매핑하지 않습니다. 유니코드 드라이버는 SQL_CHAR 데이터를 수락해야 합니다.

드라이버 관리자는 드라이버와 DSN 이름을 유니코드에 저장하고 필요에 따라 ANSI에 매핑합니다. 유니코드 문자를 ANSI 문자에 매핑할 수 없는 경우(컴퓨터의 네이티브 코드 페이지가 아닌 코드 페이지의 문자가 드라이버 및 DSN 이름에 사용되는 경우 발생할 수 있음) 변환할 수 없는 문자는 시스템에서 제공하는 기본 문자로 표시됩니다.