2014-02-18 97 views
0

我需要在運行時使用從數據庫返回的值作爲屬性創建OdbcParameter的實例。 我的問題是數據類型的描述返回爲大寫的字符串,這就是爲什麼Enum.Parse或Enum.TryParse沒有我的字符串轉換爲它的枚舉的correspondig值:將字符串強制轉換爲OdbcType枚舉

var datatype = (OdbcType)Enum.Parse(typeof(OdbcType), "NVARCHAR"); 

爲了解決這個問題問題我已經創建了一個詞典:

public static Dictionary<string, OdbcType> OdbcDataTypeDictionary = new Dictionary<string, OdbcType>() 
     { 
      {"BIGINT", OdbcType.BigInt}, 
      {"BINARY", OdbcType.Binary}, 
      {"BIT", OdbcType.Bit}, 
      {"CHAR", OdbcType.Char}, 
      {"DATE", OdbcType.Date}, 
      {"DATETIME", OdbcType.DateTime}, 
      {"DECIMAL", OdbcType.Decimal}, 
      {"DOUBLE", OdbcType.Double}, 
      {"IMAGE", OdbcType.Image}, 
      {"INT", OdbcType.Int}, 
      {"NCHAR", OdbcType.NChar}, 
      {"NTEXT", OdbcType.NText}, 
      {"NUMERIC", OdbcType.Numeric}, 
      {"NVARCHAR", OdbcType.NVarChar}, 
      {"REAL", OdbcType.Real}, 
      {"SMALLDATETIME", OdbcType.SmallDateTime}, 
      {"SMALLINT", OdbcType.SmallInt}, 
      {"TEXT", OdbcType.Text}, 
      {"TIME", OdbcType.Time}, 
      {"TIMESTAMP", OdbcType.Timestamp}, 
      {"TINYINT", OdbcType.TinyInt}, 
      {"UNIQUEIDENTIFIER", OdbcType.UniqueIdentifier}, 
      {"VARBINARY", OdbcType.VarBinary}, 
      {"VARCHAR", OdbcType.VarChar} 
     }; 

它的工作,但我不相信這是最好的解決方案。

有沒有人有更好的方法來解決這個問題的想法?

回答

2

Enum.TryParse還有一個布爾參數忽略的情況下,將工作MSDN Link

+0

非常感謝!正是我需要的。 – Daniel

1

你想要的Enum.Parse重載的構造函數有一個ignoreCase參數即

(OdbcType)Enum.Parse(typeof(OdbcType), "NVARCHAR", true);