不知道为什么在c#中,我会从SQL命令参数对象中的DbType中得到一个完全不同的类型代码?
我敢肯定有人会把这一个烧掉的。。虽然我看到的概念看起来还不错 基本上,我正在尝试动态设置SQL命令参数类型和值。所以基本上我是:不知道为什么在c#中,我会从SQL命令参数对象中的DbType中得到一个完全不同的类型代码?,c#,sql-server-2008,stored-procedures,C#,Sql Server 2008,Stored Procedures,我敢肯定有人会把这一个烧掉的。。虽然我看到的概念看起来还不错 基本上,我正在尝试动态设置SQL命令参数类型和值。所以基本上我是: 动态获取参数的DbType。。所以这部分很好——只是引用如下:DbType ParamDBtype=cmd.Parameters[Param1Variable.DbType 然后(不管愚蠢与否!)我尝试在.NET中获取类型,以便将值转换为正确的类型(因为在我的示例中,我只是将值/对作为字符串获取..因此需要让DbType知道转换为什么类型) 显然我可以做到: Type
感谢您的帮助。您看到的是值上的
对象。GetTypeCode()
,如果是数据库类型,则显示“值”是枚举。枚举的类型代码只是枚举的基础类型:int
。在本例中,它将为每个数据库类型
报告int
——即使不存在:
var dbtype = (DbType)(-12341);
var typeCode = dbtype.GetTypeCode(); // Int32
您试图执行的操作与DbType
的GetTypeCode()
无关。这里的问题是“显然”
如果确实要将枚举映射到其他对象,则理想的方法是使用开关
。完全可能需要您自己提供映射。您看到的是值上的对象。GetTypeCode()
,如果是数据库类型
则是“值”是枚举。枚举的类型代码只是枚举的基础类型:int
。在本例中,它将为每个数据库类型
报告int
——即使不存在:
var dbtype = (DbType)(-12341);
var typeCode = dbtype.GetTypeCode(); // Int32
您试图执行的操作与DbType
的GetTypeCode()
无关。这里的问题是“显然”
如果确实要将枚举映射到其他对象,则理想的选择是使用开关。完全可能需要您自己提供映射。据我所知,DbParameter的“值”是“对象”因此,您无需转换任何内容即可将其指定为DbParameter的值。如果DbParameter已正确设置了类型,则可以继续。嘿,谢谢。我正试图从集合中的字段名中找出参数类型,然后正确指定。完全忘了使用SetParameter,它只允许您传递字段/值..谢谢!据我所知,DbParameter的“值”是“object”因此,您无需转换任何内容即可将其指定为DbParameter的值。如果DbParameter已正确设置了类型,则可以继续。嘿,谢谢。我正试图从集合中的字段名中找出参数类型,然后正确指定。完全忘了使用SetParameter,它只允许您传递字段/值..谢谢你!嘿,谢谢你的回复..我经历了一个愚蠢的过程..只需从我拥有的集合中的字段名中查询param dbtype..然后当然分配“that”dbtype到database.AddInParameter方法,该方法采用参数名称、类型、值…相反,我只使用了database.SetParameter方法,该方法仅采用参数/值…再次感谢您的回复!嘿,感谢您的回复..看起来我正在经历一个愚蠢的过程..只需从集合中的字段名查询参数dbtype我必须..然后当然要将“that”dbtype分配给database.AddInParameter方法,该方法采用param名称、类型、值…而我只使用database.SetParameter方法,该方法仅采用param/值…再次感谢您的回复!