Dim MyType as String = "numeric"
Dim sdtype As SqlDbType sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)
不适用于数字。我想知道如何处理这些数据类型。提前谢谢。
答案 0 :(得分:1)
SqlDbType
枚举根本不包含值“numeric”,因此无法将此类字符串强制转换为该枚举。
为避免错误,请使用以下代码:( C#,不熟悉VB.NET抱歉)
SqlDbType dbType;
if (Enum.TryParse<SqlDbType>(myType, true, out dbType))
{
MessageBox.Show("type: " + dbType);
}
else
{
MessageBox.Show("invalid type: " + myType);
}
有各种可用的数字类型,例如Float
所以将字符串更改为其中一个应该可以正常工作:
Dim MyType as String = "float"
SQL Server数据库提供程序的所有可用数据类型都是:
BigInt Binary Bit Char DateTime Decimal Float Image Int Money NChar NText NVarChar Real UniqueIdentifier SmallDateTime SmallInt SmallMoney Text Timestamp TinyInt VarBinary VarChar Variant Xml Udt Structured Date Time DateTime2 DateTimeOffset
任何不在此列表中投射字符串的尝试都将导致错误。
编辑:第二个想法看起来好像在使用Access数据库?在这种情况下,请使用OleDbType
而不是SqlDbType
,只需将代码更改为:
Dim sdtype As OleDbType sdtype = DirectCast([Enum].Parse(GetType(OleDbType), MyType), OleDbType)
它应该有效,因为OleDbType
确实包含“数字”。