La table syscolumns et la colonne xtype31 décembre 2010

Lorsque l’on souhaite extraire les informations concernant la structure d’une base de données SQL Server, ce sont les tables systèmes sysobjects et syscolumns sur lesquelles il faut s’orienter.

Voici une méthode de conversion simple permettant de convertir l’entier de la colonne xtype dans la table syscolumns en un type C#.

private static Type GetTypeByXType(byte xType)
{
    switch (xType)
    {
        case 36://uniqueidentifier
            return typeof(Guid);
        case 48://tinyint
            return typeof(byte);
        case 52://smallint
            return typeof(short);
        case 56://int
        case 108://numeric
            return typeof(int);
        case 59://real
        case 62://float
            return typeof(double);
        case 60://money
            return typeof(decimal);
        case 40://date
        case 58://smalldatetime
        case 61://datetime
            return typeof(DateTime);
        case 104://bit
            return typeof(bool);
        case 106://decimal
            return typeof(decimal);
        case 122://smallmoney
            return typeof(float);
        case 127://bigint
            return typeof(long);
        case 34://image
        case 98://sql_variant
        case 165://varbinary
        case 173://binary
            return typeof(byte[]);
        case 189://timestamp
            return typeof(TimeSpan);
        case 35://text
        case 99://ntext
        case 167://varchar
        case 175://char
        case 231://nvarchar
        case 239://nchar
        case 241://xml
            return typeof(string);
        default:
            return typeof(object);
    }
}