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

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

4

1 回答 1

1

枚举根本不包含值“ SqlDbTypenumeric”,因此不可能将此类字符串强制转换为该枚举。

为避免错误,请使用这样的代码:(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确实包含“数字”。

于 2012-10-03T12:11:41.753 回答