2012-12-14 51 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个小时在这! :( –

相关问题