2009-05-29 7 views
2

J'ai un projet qui crée une table à partir d'un DataTable vers une table SQL via SMO.Conversion de System.types en SMO.DataTypes

Les types de données des colonnes ne convertissent pas actuellement de System.Type en SMO.DataType. Je peux le faire via une déclaration de cas, mais j'espérais une solution plus propre. Peut-être quelque chose impliquant TypeDescriptor.GetConverter (targetDataType).

Cela fonctionne entre System.types et SQL.DataTypes mais je n'arrive pas à le convertir en SMO.DataTypes.

Des suggestions ou des conseils?

TIA

Répondre

0

Je fini par utiliser une déclaration de cas pour gérer la conversion. Fonctionne bien.

-1

Je l'ai fait de cette façon aussi. Je n'ai pas traité tous les cas, j'ajoute alors quand j'en ai besoin. mon Methode est pas très propre ...

public static SqlDbType MappingToSQLType(String CLRTypeName) 
    { 
     string[] t = CLRTypeName.Split('.'); 
     for (int i = 0; i <= 31; i++)// there is 31 sqldatatypes 
     { 
      if (t[1].Equals("Int64") && 
       ((SqlDbType)i).ToString().ToLower().Equals("bigint")) 
       return ((SqlDbType)i); 
      else if (t[1].Equals("Int32") && 
       ((SqlDbType)i).ToString().ToLower().Equals("int")) 
       return ((SqlDbType)i); 
      else if (t[1].Equals("Int16") && 
       ((SqlDbType)i).ToString().ToLower().Equals("smallint")) 
       return ((SqlDbType)i); 
      else if (t[1].Equals("Boolean") && 
       ((SqlDbType)i).ToString().ToLower().Equals("bit")) 
       return ((SqlDbType)i); 
      else if (t[1].Equals("Double") && 
       ((SqlDbType)i).ToString().ToLower().Equals("float")) 
       return ((SqlDbType)i); 
      else if (t[1].Equals("Single") && 
       ((SqlDbType)i).ToString().ToLower().Equals("real")) 
       return ((SqlDbType)i); 
      else if (((SqlDbType)i).ToString().ToLower().Equals(t[1].ToLower())) 
       return ((SqlDbType)i); 
     } 
     return SqlDbType.NVarChar; 
    } 
+0

question portait sur la conversion de '' System.Type' à SMO.DataType' pas 'SqlDbType' – lostmylogin