2009-03-04 2 views
1

DB에 저장할 입력 변수에 따라 매개 변수에 할당 할 SQLDBType을 어떻게 결정합니까? 테스트 할 GetType equivelant가 있습니까?매개 변수에 추가 할 변수의 SQLDBType은 어떻게 결정합니까?

If IsNumeric(ParameterValue) Then 
    Parameter.SqlDbType = SqlDbType.Float 
ElseIf IsDate(ParameterValue) Then 
    Parameter.SqlDbType = SqlDbType.DateTime 
ElseIf IsArray(ParameterValue) Then 
    Parameter.SqlDbType = SqlDbType.VarBinary 
Else 
    Parameter.SqlDbType = SqlDbType.VarChar 
End If 

답변

3

는 (더 정확한 데이터 형식을 사용하는 떠 반대, 또는 BIGINT로 예를 들어 소수를 필요 특히, 그것에게 당신이 원하는 안전하게 방법을 수행하는 (너무 많은 버전에서) 너무 많은 SqlDbTypes있다).

SMO를 사용하여 .NET 데이터 형식과 SqlDbTypes 사이에 간단한 매핑 시스템을 만드는 것이 좋습니다. 그런 다음 데이터 저장에 필요한대로 매개 변수를 DB 유형에 매핑하기 만하면됩니다.

좋은 결과는 라이브러리를 다시 사용하거나 인터페이스를 작성하여 각 SQL 버전에 맞게 확장 할 수 있다는 점입니다. 좋은 생각

// Get the DataType from the DataRow in your result set 
public void GetDataType(DataRow dr) 
{ 
    DataType dt = new DataType((SqlDataType)Enum.Parse(typeof(SqlDataType), dr["DataTypeName"].ToString(), true)) 
    { 
     MaximumLength = Convert.ToInt32(dr["ColumnSize"]), 
     NumericPrecision = Convert.ToInt32(dr["NumericPrecision"]) 
    }; 
    // TODO: Map DataType to .NET datatype 
} 
+0

:


이 (C# 코드)를보십시오. 나는 그것을 좋아하지만 항목들이 한 번에 하나씩 저음을 받고 배열로되어 있기 때문에 그렇게 할 수는 없습니다. 대신 실제로 알려진 유형을 확인 중이며 좀 더 구체적으로해야하는 경우 특정 데이터 유형을 추적하기 위해 배열에 몇 가지 추가 요소를 추가했습니다. – Middletone

관련 문제