【问题标题】:Convert String to SqlDbType将字符串转换为 SqlDbType
【发布时间】:2011-01-27 20:37:15
【问题描述】:

我正在尝试将字符串值转换为 SqlDbType。我的代码能够将“Text”转换为 SqlDbType.Text 而没有任何错误,但是当我尝试将“bit”转换为 SqlDbType.Bit 时,我收到以下错误:“未找到请求的值 '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)

【问题讨论】:

    标签: asp.net sql vb.net


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      看起来是区分大小写的。试试“Bit”,看看是否可行。

      【讨论】:

      • 你是对的。我只是注意到有一个标志会忽略大小写。我添加了 True 并且它有效! sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType, True)
      【解决方案3】:

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

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

      CType 稍微灵活一些,但我确实认为这是一个很长的尝试,但也许值得一试。

      【讨论】:

        猜你喜欢
        • 2019-10-10
        • 2019-01-05
        • 2015-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        相关资源
        最近更新 更多