我似乎在啃这个问题,虽然我可以看到应该如何工作,但我似乎无法看到木头的树木......
基本上我有一种情况,我有一个SQL 2008存储过程..非常基本..简单的varchar和int等。 因为我从javascript获取值/对数据,当然我并不隐含地知道要设置的DbType ..我知道这听起来有点可能,我可以在技术上添加某种标记到fieldname来表示实际类型。
所以现在我正在努力做到以下几点:
(我正在使用企业库数据访问块,但db是数据库对象/连接对象) - val / pairs也来自哈希表..
db.DiscoverParameters(cmd);
IDictionaryEnumerator de;
de = PDMdata.GetEnumerator();
while (de.MoveNext())
{
DbType ptype = cmd.Parameters[de.Key.ToString()].DbType;
db.AddInParameter(cmd, de.Key.ToString(), ptype, (ptype)de.Value.ToString());
}
作为参考,db.AddInParameter接受Command对象,param名称,param类型和param值。
正如您所看到的,我正在尝试将值转换为正确的SQL DbType ..但当然它正在尝试使用普通的C#Type ..
将值转换为动态SQL DbType的任何想法
先谢谢你的帮助..
答案 0 :(得分:3)
SqlCommand.Paramaters
集合有一个AddWithValue(String name, Object value)
方法...所以如果您愿意,可以完全跳过SqlDbType。
答案 1 :(得分:0)
好的,傻了我..如果我已经检查了前端/中间件的格式/数据质量,那么我可以(因为我使用的是Enterprise Library 5.0).SetParameterValue(cmd,paramname,paramvalue)和参数发现将照顾其余的......
所以基本上不使用Explicit .AddInParameter(需要DbType),上面的解决方案对我有用..在这种情况下你也可以。