Dim MyType as String = "numeric"
Dim sdtype As SqlDbType sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)
不适用于数字。我想知道如何处理这种数据类型。提前致谢。
Dim MyType as String = "numeric"
Dim sdtype As SqlDbType sdtype = DirectCast([Enum].Parse(GetType(SqlDbType), MyType), SqlDbType)
不适用于数字。我想知道如何处理这种数据类型。提前致谢。
枚举根本不包含值“ 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 数据库提供程序的所有可用数据类型包括:
大整数 二进制 少量 字符 约会时间 十进制 漂浮 图片 诠释 钱 NChar 文本 NVarChar 真实的 唯一标识符 小日期时间 小整数 小钱 文本 时间戳 小整数 变量二进制 变量字符 变体 xml UDT 结构化的 日期 时间 日期时间2 日期时间偏移
任何尝试转换不在此列表中的字符串都将导致错误。
编辑:重新考虑看起来您正在使用 Access 数据库?在这种情况下,使用OleDbType
而不是SqlDbType
,只需将代码更改为:
Dim sdtype As OleDbType sdtype = DirectCast([Enum].Parse(GetType(OleDbType), MyType), OleDbType)
它应该可以工作,因为OleDbType
确实包含“数字”。