2013-08-31 113 views
1

我还有一个问题...这里是代码参数传递,但变量的参数

public int CheckForDuplicateRandomOrderNumber() 
     { 
      int randomNumber = GenerateRandomOrderNumber(); 
      string strCmdCheckForDuplicates = "sp_Check$For$Duplicate$Order$Numbers"; 
      SqlCommand cm = new SqlCommand(strCmdCheckForDuplicates, cn); 
      SqlParameter myPm; 
      myPm = cm.Parameters.Add("@OrderNumber", SqlDbType.Int); 
      myPm.Value = randomNumber; 
      myPm.Direction = ParameterDirection.Input; 

      cn.Open(); 
      cm.ExecuteReader(); 
      cn.Close(); 

      if (randomNumber == 1) 
      { 
       return randomNumber; 
      } 
      else 
       return 0; 
     } 

当我运行这段代码我得到一个错误说的存储过程需要一个参数是通过,当我调试变量有参数传递。我不知道为什么发生这种情况... 而另一个问题,涉及到这...当我写这篇文章 ...

cm.parameters.add(new sqlparameter("@OrderNumber", sqldbtype.int)).value = randomNumber; 

没有参数方向

+0

默认情况下,SqlParameter的方向是Input,因此指定它不会执行任何操作。 –

+0

谢谢,好,这样才能明白为什么我从来没有一个方向的输入...任何关于我的问题的其余部分的想法?我的错误出现在它试图执行读取器时,并​​且我的变量有要传递的参数。 – Cwm

+0

而不是'cm.Parameters.Add'尝试'cm.Parameters.AddWithValue'。 –

回答

0

首先我会检查该randomnumber不是null,如果它看起来像参数丢失。

+0

我发现我出错的地方...所以我要回答我自己的问题...这很尴尬.. – Cwm

+0

@DarylBehrens - 不能是它被声明为'int'而不是int? ' – Hogan

+0

我必须等待8小时后才能回答我自己的问题...继承人是什么问题.. – Cwm

2

我发现了什么问题是我的代码...我忘了一行代码一个小行...

cm.CommandType = CommandType.StoredProcedure; 

这也难怪为什么它不停地说我是不是供应参数,它不知道我在做什么......我想这是一个经典的时刻,它显示了如何错过一行代码可能导致数小时的时间试图找出它。