2012-01-12 34 views
5

Ben ben SQL Server türleri, SQLData türleri ve .NET türleri betwen dönüştürmek için kullanın aşağıdaki harita:SQL Server

/// <summary> 
    /// The map of types. THis maps all the corresponding types between sql server types, .net sql types, and .net types 
    /// </summary> 
    public static List<SqlTypeConversionHolder> TypeList = new List<SqlTypeConversionHolder>() 
    { 
     new SqlTypeConversionHolder("bigint", typeof(SqlInt64),typeof(Int64)), 
     new SqlTypeConversionHolder("binary", typeof(SqlBytes),typeof(Byte[])), 
     new SqlTypeConversionHolder("bit", typeof(SqlBoolean),typeof(Boolean)), 
     new SqlTypeConversionHolder("char", typeof(SqlChars),typeof(char)), //this one may need work 
     new SqlTypeConversionHolder("cursor", null,null), 
     new SqlTypeConversionHolder("date", typeof(SqlDateTime),typeof(DateTime)), 
     new SqlTypeConversionHolder("datetime", typeof(SqlDateTime),typeof(DateTime)), 
     new SqlTypeConversionHolder("datetime2", null,typeof(DateTime)), 
     new SqlTypeConversionHolder("DATETIMEOFFSET", null,typeof(DateTimeOffset)), 
     new SqlTypeConversionHolder("decimal", typeof(SqlDecimal),typeof(Decimal)), 
     new SqlTypeConversionHolder("float", typeof(SqlDouble),typeof(Double)), 
     //new SqlTypeConversionHolder("geography", typeof(SqlGeography),typeof(null)); 
     //new SqlTypeConversionHolder("geometry", typeof(SqlGeometry),typeof(null)); 
     //new SqlTypeConversionHolder("hierarchyid", typeof(SqlHierarchyId),typeof(null)); 
     new SqlTypeConversionHolder("image", null,null), 
     new SqlTypeConversionHolder("int", typeof(SqlInt32),typeof(Int32)), 
     new SqlTypeConversionHolder("money", typeof(SqlMoney),typeof(Decimal)), 
     new SqlTypeConversionHolder("nchar", typeof(SqlChars),typeof(String)), 
     new SqlTypeConversionHolder("ntext", null,null), 
     new SqlTypeConversionHolder("numeric", typeof(SqlDecimal),typeof(Decimal)), 
     new SqlTypeConversionHolder("nvarchar", typeof(SqlChars),typeof(String)), 
     new SqlTypeConversionHolder("nvarchar(1)", typeof(SqlChars),typeof(Char)), 
     new SqlTypeConversionHolder("nchar(1)", typeof(SqlChars),typeof(Char)), 
     new SqlTypeConversionHolder("real", typeof(SqlSingle),typeof(Single)), 
     new SqlTypeConversionHolder("rowversion", null,typeof(Byte[])), 
     new SqlTypeConversionHolder("smallint", typeof(SqlInt16),typeof(Int16)), 
     new SqlTypeConversionHolder("smallmoney", typeof(SqlMoney),typeof(Decimal)), 
     new SqlTypeConversionHolder("sql_variant", null,typeof(Object)), 
     new SqlTypeConversionHolder("table", null,null), 
     new SqlTypeConversionHolder("text", typeof(SqlString),typeof(string)), //this one may need work 
     new SqlTypeConversionHolder("time", null,typeof(TimeSpan)), 
     new SqlTypeConversionHolder("timestamp", null,null), 
     new SqlTypeConversionHolder("tinyint", typeof(SqlByte),typeof(Byte)), 
     new SqlTypeConversionHolder("uniqueidentifier", typeof(SqlGuid),typeof(Guid)), 
     new SqlTypeConversionHolder("varbinary", typeof(SqlBytes),typeof(Byte[])), 
     new SqlTypeConversionHolder("varbinary(1)", typeof(SqlBytes),typeof(byte)), 
     new SqlTypeConversionHolder("binary(1)", typeof(SqlBytes),typeof(byte)), 
     new SqlTypeConversionHolder("varchar", typeof(SqlString),typeof(string)), //this one may need work 
     new SqlTypeConversionHolder("xml", typeof(SqlXml),typeof(string)) 
    }; 

bir SqlTypeConversionHolder ilk parametresi adıdır sql sunucu türü. İkinci parametre .Net Sql türüdür. Üçüncü, .net türüdür.

This one may need work dediklerimiz, emin olmadıklarımdır. Birisi doğru dönüşümlerin ne olacağı konusunda biraz yardım sağlayabilir mi? MSDN'ye bakıldığında, uygun bir dönüşüm türüne sahip değil gibi görünüyor. Bunu inanmak zor buluyorum. SQL Server türünden .NET türüne gitmenin bir yolu olmalı.

cevap

0

MSDN'ye göre, üçünüzün hepsi (char, varchar, text) doğru.

bakınız: Ayrıca

1

http://msdn.microsoft.com/en-us/library/system.data.sqltypes.aspx zaten Tablo I burada bu tip SQL Server stored procedure convert varchar to int

[Düzenle]

nasıl kullanılacağına ilişkin bir örnek vermek DataTable

dönüşür SQL 2008 için bir tane daha eklemek için

 char is not the correct .NET data type for a SQL Server char. 
    It must be converted to either char[] or string, 
since a SQL char can hold more than one character. 

Bunun için @RedFilter için bir kredi

2

char, SQL Server char için doğru .NET veri türü değil. Bir SQL char birden fazla karakter tutabildiğinden, char[] veya string'a dönüştürülmelidir.

Microsoft referans here, benimle aynı fikirde. Diğerleri doğru görünüyor.

+0

+1 goooood catch! – Jordan