2012-12-14 53 views
3

我通過這個網站搜查,發現我的問題的一些話題,但仍然無法使這項工作....不能字符串參數傳遞給存儲過程

我只是試圖檢索使用從SQL Server數據庫中的數據存儲過程。 我傳遞一個參數是SqlDbType.Varchar(50)類型,但我得到一個SQL錯誤:

Procedure or function 'WyszukajPrzesylki' expects parameter '@Nazwisko', which was not supplied.

我在做什麼錯?存儲過程的作品,如果我測試SSMS中......

它甚至當我輸入

SqlCommand com = new SqlCommand("WyszukajPrzesylki @Nazwisko = Example", con); 

你是我最後的希望傢伙......我已經失去了2天,這個問題並不能得到任何進一步的...不要有插入和使用C#刷新歷史記錄......眼前這個任何問題....

因此,這裏是SP

ALTER PROCEDURE [dbo].[WyszukajPrzesylki] 
-- Add the parameters for the stored procedure here 
@Nazwisko varchar(50) 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

-- Insert statements for procedure here 
-- SELECT * FROM Przesylki WHERE (NazwiskoAdresata = @NazwiskoAdresata) 
SELECT * FROM Przesylki WHERE (Przesylki.NazwiskoAdresata = @Nazwisko) 
END 

和行動的代碼按鈕:

SqlConnection con = new SqlConnection(Properties.Settings.Default.Monitoring_PrzesylekString1); 
SqlCommand com = new SqlCommand("WyszukajPrzesylki", con); 
com.CommandType = CommandType.StoredProcedure; 
SqlParameter parametrNazwisko = new SqlParameter("@Nazwisko", SqlDbType.VarChar, 50); 
parametrNazwisko.Value = "Dziubak"; 
com.Parameters.Add(parametrNazwisko); 

SqlDataAdapter ad = new SqlDataAdapter(com.CommandText, con); 
DataSet ds = new DataSet(); 

ad.Fill(ds, "id"); 
con.Close(); 
DataTable datatableA = ds.Tables[0]; 
dataGridView1.DataSource = ds; 
dataGridView1.DataMember = "id"; 
+0

'...的SqlCommand( 「EXEC dbo.WyszukajPrzesylki @Nazwisko = '實施例';」),CON);' –

回答

1

你做的幾乎一切權利 - 到這行:

SqlDataAdapter ad = new SqlDataAdapter(com.CommandText, con); 

你要創建一個SQL數據適配器,但僅基於com的SQL語句 - 你應該使用這個代替:

SqlDataAdapter ad = new SqlDataAdapter(com); 

您應該使用全com對象,你已經設置了參數和一切 - 只是它的SQL語句文本!

+0

這條線是錯誤 SqlDataAdapter的廣告=新的SqlDataAdapter(com.CommandText,CON); 相反,它應該是這樣的 SqlDataAdapter ad = new SqlDataAdapter(com); 不能相信我花了16個小時在這! :( –

相關問題