사용자가 해당 테이블에서 2 열을 선택하여 쿼리에 사용할 수 있도록하려고합니다.ODBC에서 열 스키마의 DATA_TYPE이 음수가되는 이유는 무엇입니까?
데이터베이스를 선택하기위한 공급자 및 연결 문자열을 정의합니다. 이 작업은 DBProviderFactory 및 DBConnectionStringBuilder를 사용하여 수행됩니다. 문제는 ODBC 공급자를 사용할 때 다른 공급자 (OLEDB, Sql)가 좋아 보이는 것 같습니다.
스키마를 쿼리하여 테이블을 가져옵니다. 그런 다음 사용자는 표를 선택합니다. 사용자가 하나의 문자열 열과 하나의 숫자 열만 선택할 수 있도록하려면 스키마에서 정의 된 유형을 기반으로 선택한 테이블에 대해 표시된 열을 제한하려고합니다. 이렇게하려면 DataTypes 컬렉션을 쿼리하고 ProviderDbType 열 (숫자 포함) 및 DataType 열 (.NET 시스템 형식 포함)을 사용하여 DbType을 시스템 유형으로 매핑합니다.
그런 다음 사용자가 선택한 테이블의 스키마를 쿼리하고 결과의 DATA_TYPE 열을 기반으로 시스템 유형을 조회하므로 사용자가 문자열 인 하나의 열과 다른 열을 선택할 수있게 할 수 있습니다. 숫자입니다. 내 문제는 대부분의 데이터베이스 형식이 작동하지만 nchar의 경우 ProviderDbType이 11 (DataTypes 스키마 쿼리에서)으로 표시되지만 DATA_TYPE 테이블의 열을 가져올 때 -8 ProviderDbType 열).
열 유형을 올바르게 결정하는 방법은 무엇입니까? 아니면 내가 잘못하고있는거야? 인 unixODBC의 sqlext.h에서