2012-12-14 1 views
3

Je cherchai à travers ce site et a trouvé un sujet de mon problème, mais ne peut toujours pas faire ce travail ....ne peut pas passer le paramètre de chaîne à la procédure stockée

J'essaye simplement de récupérer des données à partir d'une base de données SQL Server à l'aide d'un procédure stockée. Je passe un paramètre qui est un type SqlDbType.Varchar(50), mais je reviens d'une erreur SQL:

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

Qu'est-ce que je fais mal? procédure magasin fonctionne si je teste dans SSMS ...

Il fonctionne même lorsque je tape

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

Vous êtes mes derniers gars espoir ... Je l'ai déjà perdu 2 jours avec ce problème et ne peut pas aller plus loin ... ne pas avoir de problèmes avec l'insertion et la mise à jour des dossiers en utilisant C# ... juste ce ....

voici donc le code de 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 

et l'action du bouton:

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 'exemple';"), con)' –

Répondre

1

Tu fais presque tout droit - jusqu'à cette ligne:

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

Vous créez un adaptateur de données SQL, mais seulement sur la base de l'instruction SQL de la com - vous devez utiliser ceci:

SqlDataAdapter ad = new SqlDataAdapter(com); 

vous devez utiliser tout l'objet com que vous avez déjà configuré avec les paramètres et tout - pas juste c'est le texte de l'instruction SQL!

+0

Cette ligne était mauvaise SqlDataAdapter ad = new SqlDataAdapter (com.CommandText, con); À la place, il devrait être comme ceci SqlDataAdapter ad = new SqlDataAdapter (com); Je ne peux pas croire que j'ai passé 16 heures sur ce !!! :( –

Questions connexes