2013-08-31 110 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; 

這也難怪爲什麼它不停地說我是不是供應參數,它不知道我在做什麼......我想這是一個經典的時刻,它顯示瞭如何錯過一行代碼可能導致數小時的時間試圖找出它。