Связывание TypeCode и SqlDbType или DbType - PullRequest
0 голосов
/ 22 октября 2011

Есть ли способ связать перечисления TypeCode и перечисления SqlDbType.Я планирую, когда определенная переменная в диезе любого типа идентифицирует свой TypeCode, у меня есть соответствующий SqlDbType.Нужно ли мне создать таблицу в моей базе данных, чтобы удовлетворить мои требования.ТИА

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Вот прием для получения значения SqlDbType для любого данного объекта.(Он не основан на коде типа):

// create an SQL Parameter object
SqlParameter p = new SqlParameter("dummy", myObj);

// ask SQL code to compute its SqlDbType for us
Console.WriteLine(p.SqlDbType);
0 голосов
/ 25 марта 2018

Следующий метод конвертирует TypeCode в соответствующий SqlDbType.

Если TypeCode не может быть отображен, error = true;

public static SqlDbType Typecode2SqlDbType(TypeCode typecode, out bool error)
{
    error=false;
    switch (typecode)
    {
        case TypeCode.Empty     :
             return SqlDbType.Variant   ;
        case TypeCode.Object    :
             return SqlDbType.Variant   ;
        case TypeCode.DBNull    :
             return SqlDbType.Variant   ;
        case TypeCode.Boolean   :
             return SqlDbType.Bit       ;
        case TypeCode.Char      :
             return SqlDbType.NChar     ;

        case TypeCode.Byte      :
             return SqlDbType.TinyInt   ;
        case TypeCode.Int16     :
             return SqlDbType.SmallInt  ;

        case TypeCode.Int32     :
             return SqlDbType.Int       ;

        case TypeCode.Int64     :
             return SqlDbType.BigInt    ;

        case TypeCode.Single    :
             return SqlDbType.Real      ;
        case TypeCode.Double    :
             return SqlDbType.Float     ;
        case TypeCode.Decimal   :
             return SqlDbType.Decimal   ;
        case TypeCode.DateTime  :
             return SqlDbType.DateTime  ;
        case TypeCode.String    :
             return SqlDbType.NVarChar  ;

        // can't map TypeCode.SByte  
        // can't map TypeCode.UInt16  
        // can't map TypeCode.UInt32  
        // can't map TypeCode.UInt64  
        default:
        {
            error =true;
            return SqlDbType.NVarChar;
        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...