2011-03-23 130 views
4
 string commandGetIslemIdleri = ("EXEC GetIslemIdleri"); 

     cmd = new SqlCommand(commandGetIslemIdleri, sqlConn); 
     cmd.Parameters.Add(new SqlParameter("@CARIID", 110)); 

     using (var reader = cmd.ExecuteReader()) //error occurs here 
     { 
      while (reader.Read()) 
      { 
       islemidleri.Add(reader.GetInt32(0)); 

      } 

     } 

以上是我正在嘗試寫入的代碼,使用參數CARIID這是一個整數來調用以下存儲過程。當我運行代碼時發生錯誤,並說"Procedure or function 'GetIslemIdleri' expects parameter '@CARIID', which was not supplied." ,但盡我所知,從我從here讀取的例子我發送參數與此​​代碼cmd.Parameters.Add(new SqlParameter("@CARIID", 110));我需要幫助,提前謝謝。將參數傳遞給c中的sql存儲過程#

ALTER PROCEDURE [dbo].[GetIslemIdleri] 
    @CARIID int 
AS 
BEGIN 
SET NOCOUNT ON; 

SELECT ID 
FROM TBLP1ISLEM 
WHERE [email protected] 
END 
+0

您是否指定了cmd.CommandType = CommandType.StoredProcedure; – WorldIsRound 2011-03-23 15:45:13

+0

我試了十次,沒有什麼改變,但謝謝。 – Bastardo 2011-03-23 15:49:04

回答

3

如果你想使用一個SqlCommand調用存儲過程中,不要執行EXEC GetIslemIdleri,只執行GetIslemIdleri,設置CommandTypeCommandType.StoredProcedure

cmd = new SqlCommand("GetIslemIdleri", sqlConn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add(new SqlParameter("@CARIID", 110)); 

using (var reader = cmd.ExecuteReader()) //error occurs here 
{ 
    while (reader.Read()) 
    { 
     islemidleri.Add(reader.GetInt32(0)); 
    } 
} 
+0

我試了八次,沒有什麼改變,但謝謝。 – Bastardo 2011-03-23 15:48:19

+0

@EmreVeriyaz - 那麼你的代碼中有其他地方出現錯誤,我剛剛在本地進行了測試(在MS SQL 2008 R2上),它工作正常。 – Mormegil 2011-03-23 16:12:30

+0

謝謝你試圖幫助,我正在分析我的代碼。 – Bastardo 2011-03-23 16:21:03

0

設置參數有點differenty:

cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110; 
+0

我試過了,但同樣的錯誤出來了。 – Bastardo 2011-03-23 15:51:42

+0

HI,閱讀下面,我發佈了一個新的解決方案。 – 2011-03-24 14:41:44

2

你需要確保你的SqlCommand設置爲CommandType.StoredProcedure。

cmd.CommandType = CommandType.StoredProcedure 
+0

我試了九次,沒有什麼改變,但謝謝。 – Bastardo 2011-03-23 15:48:36

0

你不太調用存儲過程正確。你只需要通過存儲過程(不執行)的名稱,設置命令類型的存儲過程,然後添加參數:

var command = new SqlCommand("GetIslemIdleri", conn); 
command.CommandType = CommandType.StoredProcedure; 

command.Parameters.Add(new SqlParameter("@CARIID", 110)); 
+0

我試了七次,沒有什麼改變,但謝謝。 – Bastardo 2011-03-23 15:47:55

2

你忘了加上prodecure`s名稱:

cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "GetIslemIdleri"; 
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110; 

,做的過程爲:

CREATE PROCEDURE [dbo].[GetIslemIdleri] 
(
    @CARIID int 
) 
AS 
BEGIN 
SET NOCOUNT ON;  
SELECT ID FROM TBLP1ISLEM WHERE TBLP1ISLEM.CARI_ID = @CARIID 
END 

這有工作。

+0

感謝Mitja。我解決了它實際上是由數據庫中的空值引起的問題,這導致讀者設置爲空,並且發生錯誤。 – Bastardo 2011-03-24 14:49:54