使用空参数和 SqlDataAdapter 调用存储过程
Posted
技术标签:
【中文标题】使用空参数和 SqlDataAdapter 调用存储过程【英文标题】:Calling a stored procedure with null parameters and SqlDataAdapter 【发布时间】:2010-07-15 09:25:57 【问题描述】:我有一个可以从我的 C# 代码中获取的存储过程。我正在传递一些我首先放入 HashTable 的参数。看起来是这样的:
参数名1 值1 参数名称2 值2 paramname3 value3
任何值都可以是null。所以现在我正在处理该哈希并将参数添加到适配器:
foreach (DictionaryEntry entry in myHash)
adapter.SelectCommand.Parameters.AddWithValue(entry.Key.ToString(), entry.Value);
这可行,但是当我尝试填充数据集时,它失败了:
DataSet reportDataSet = new DataSet();
adapter.Fill(reportDataSet);
错误消息是它抱怨缺少过程参数。想法?
谢谢:-)
【问题讨论】:
请描述存储过程声明。 【参考方案1】:我认为您必须检查其是否为 null
并将其设置为 DBNull.Value
而不是 null
否则它认为该参数丢失,因为它具有 null
值。
【讨论】:
以上是关于使用空参数和 SqlDataAdapter 调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章
使用带参数的 SqlDataAdapter.Update()
使用 ADO,使用 SqlDataAdapter.FillSchema 清除 @ReturnValues 和其他标记为输出的存储过程参数
当我使用参数时,SqlDataAdapter.Fill 永远不会结束
带有表类型参数的存储过程返回数据但 SqlDataAdapter 不会填充