2009-05-29 19 views
2

Ich habe ein Projekt, das eine Tabelle von einem DataTable zu einer SQL-Tabelle über SMO erstellt.Konvertieren von System.types in SMO.DataTypes

Die Datentypen der Spalten werden derzeit nicht von System.Type in SMO.DataType konvertiert. Ich kann dies über eine Case-Anweisung tun, aber ich hatte auf eine sauberere Lösung gehofft. Vielleicht etwas mit TypeDescriptor.GetConverter (targetDataType).

Dies funktioniert zwischen System.types und SQL.DataTypes, aber ich kann es nicht zu SMO.DataTypes zu konvertieren.

Irgendwelche Vorschläge oder Tipps?

TIA

Antwort

0

Ich landete eine Case-Anweisung mit der Umwandlung zu behandeln. Funktioniert ok.

-1

Ich tat auf diese Weise auch. Ich habe nicht alle Fälle behandelt, ich füge dann hinzu, wenn ich es brauche. meine Methode ist nicht sehr sauber ...

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

Frage war über Umwandlung von 'System.Type' zu' SMO.DataType' nicht 'SqlDbType' – lostmylogin