我正在尝试将字符串值转换为 SqlDbType。我的代码能够将“Text”转换为 SqlDbType.Text 而不会出现任何错误,但是当我尝试将“bit”转换为 SqlDbType.Bit 时,我收到以下错误: “未找到请求的值‘位’。”
尝试将“int”转换为 SqlDbType.Int 错误消息: 时会发生同样的事情“未找到请求的值‘int’。”
为什么这适用于“文本”而不适用于“位”或“整数”?
Dim MyType as String = "bit"
Dim sdtype As SqlDbType
sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)
最佳答案
因为枚举值是 SqlDbType.Bit,而不是 SqlDbType.bit。 Enum.Parse() 对其输入区分大小写。
您需要使用 Enum.Parse 的重载:
SqlDbType type = (SqlDbType) Enum.Parse( typeof(SqlDbType) , "bit" , true ) ;
第三个参数指示在从字符串解析枚举值时是否应忽略 (true) 或不 (false) 大小写。
关于asp.net - 将字符串转换为 SqlDbType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821569/