2009-03-04 12 views
1

DB'de depolanacak giriş değişkenine bağlı olarak bir parametreye hangi SQLDBType öğesini atayacağını nasıl belirlerim? Test edilecek bir GetType denkleme var mı?Bir parametreye eklenecek bir değişkenin SQLDBType'ı nasıl belirlenir?

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 

cevap

3

(daha fazla hassas veri türlerini kullanmak yüzer karşı, hatta büyük tamsayı olarak örneğin ondalık ihtiyaç, özellikle eğer Eğer istediğiniz güvenle yol yapmak (çok fazla sürümleri arasında) çok fazla SqlDbTypes vardır).

SMO kullanan .NET veri türleri ile SqlDbTypes arasında basit bir eşleme sistemi oluşturmayı düşünürüm. Daha sonra, verilerinizi depolamak için ihtiyaç duyduğunuz şekilde parametrelerinizi DB türüne basitçe eşleştirebilirsiniz.

Güzel olan şu ki, bu çabaya şimdi giderseniz, kütüphaneyi yeniden kullanabilir veya bir arabirim oluşturabilir ve SQL'in her sürümü için genişletebilirsiniz. iyi bir fikir

// 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

:


bu (C# kodu) deneyin. Bunu seviyorum ama öğeler birer birer birer basıldı ve bir dizide var çünkü ben bu şekilde yapamam. Bunun yerine, aslında bilinen türleri kontrol ediyorum ve daha spesifik olmak gerekirse, belirli veri türlerini izlemek için diziye bazı ekstra öğeler ekledim. – Middletone

İlgili konular