2012-01-12 38 views
5

Tôi có bản đồ sau mà tôi sử dụng để chuyển đổi betwen loại SQL Server, các loại SQLData, và các loại NET:SQL Server để chuyển đổi kiểu Net

/// <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)) 
    }; 

Tham số đầu tiên của một SqlTypeConversionHolder là tên của loại máy chủ sql. Tham số thứ hai là kiểu .Net Sql. Thứ ba là loại .net.

Những người nói This one may need work là những người mà tôi không chắc chắn. Ai đó có thể cung cấp một số trợ giúp về những chuyển đổi thích hợp sẽ là gì? Nhìn vào MSDN, có vẻ như họ không có một loại chuyển đổi thích hợp. Tôi thấy khó mà tin được. Có phải có một cách nào đó để đi từ kiểu máy chủ SQL đến loại .NET.

Trả lời

1

Ngoài ra để thêm một người nữa cho SQL 2008 nào Bảng chuyển đổi để DataTable

tôi đưa ra một ví dụ về cách sử dụng loại này ở đây SQL Server stored procedure convert varchar to int

[Chỉnh sửa]

 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. 

Tín dụng cho @RedFilter cho số đó

2

char không phải là loại dữ liệu .NET chính xác cho Máy chủ SQL char. Nó phải được chuyển đổi thành char[] hoặc string, vì SQL char có thể chứa nhiều hơn một ký tự.

Tham chiếu của Microsoft here đồng ý với tôi. Những cái khác nhìn chính xác.

+0

+1 goooood catch! – Jordan

Các vấn đề liên quan