将数字字符串转换为sqldbtype

时间:2012-10-03 11:51:34

标签: vb.net

Dim MyType as String = "numeric"
Dim sdtype As SqlDbType  sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType) 

不适用于数字。我想知道如何处理这些数据类型。提前谢谢。

1 个答案:

答案 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确实包含“数字”。