将String转换为SqlDbType

时间:2011-01-27 20:37:16

标签: asp.net sql vb.net

我正在尝试将字符串值转换为SqlDbType。我的代码能够将“Text”转换为SqlDbType.Text而没有任何错误,但是当我尝试将“bit”转换为SqlDbType.Bit时,我收到以下错误:“找不到”请求值'位'。

尝试将“int”转换为SqlDbType时发生同样的事情.Int错误消息:“找不到请求值'int'。”

为什么这适用于“text”而不是“bit”或“int”?

Dim MyType as String = "bit"
Dim sdtype As SqlDbType

sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)

3 个答案:

答案 0 :(得分:15)

因为枚举值是SqlDbType.Bit,而不是SqlDbType.bit。 Enum.Parse()对其输入是区分大小写的WRT。

你需要使用Enum.Parse的这个重载:

SqlDbType type = (SqlDbType) Enum.Parse( typeof(SqlDbType) , "bit" , true ) ;

第三个参数指示在从字符串解析枚举值时是否应忽略(true)或不忽略(false)大小写。

答案 1 :(得分:0)

看起来它区分大小写。尝试“比特”,看看是否有效。

答案 2 :(得分:0)

[Enum] .Parse(GetType(SqlDbType))的结果是什么?这是你期望的结果吗?因为我认为错误可能在那里。

作为最后一种选择,如果直接演员,你可以试试CTYpe吗? (http://msdn.microsoft.com/en-us/library/7k6y2h6x(VS.71)的.aspx)

CType略微灵活,但我认为这是一个很长的镜头,但也许值得尝试。