使用空参数和 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 不会填充

这些 SqlDataAdapter.Fill 和 DataSet.Tables 中的这个参数是啥

sqldataadapter 使用参数执行SQL语句