Aelion Ответов: 4

Невозможно передать строковый параметр хранимой процедуре C#


Привет
Я поискал на этом сайте и нашел какую-то тему о моей проблеме, но все еще не могу заставить это работать....
Я просто пытаюсь получить данные из базы данных SQL с помощью хранимой процедуры.
Я передаю один параметр, который является типом SqlDbType.Varchar(50), но возвращаю ошибку SQL:

Процедура или функция 'WyszukajPrzesylki' ожидает параметр '@Nazwisko', который не был поставлен.

Что я делаю не так? Процедура хранения работает, если я тестирую ее в 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";

Aelion

Почему я не могу передать параметр с помощью

параметрназвиско.Значение = " / Место";

- Есть какие-нибудь идеи?

__TR__

Попробуй
com.Parameters.Add(new SqlParameter("@Nazwisko", "Dziubak"));

4 Ответов

Рейтинг:
34

Aelion

Я нашел решение проблемы!

Я должен передать весь командный параметр следующим образом

SqlDataAdapter ad = new SqlDataAdapter(com);


не только ком.свойство CommandText ... это было глупо... но я потеряла так много времени...


OriginalGriff

Не глупо, просто раздражает. Мы все совершаем ошибки!

Вы получите мою пятерку за публикацию решения.

Aelion

Спасибо... это моя первая "пятерка" на этом сайте ;-)

Рейтинг:
2

rasid1

Добавьте свое решение здесь

Цитата:
Добавьте свое решение здесь


Рейтинг:
1

Jibesh

поскольку вы используете хранимую процедуру в качестве оператора SQL, вам не нужно передавать имя параметра с символом@, просто передайте имя параметра SQL сделает все остальное.

SqlParameter parametrNazwisko = new SqlParameter("Nazwisko", "Dziubak"); 


Рейтинг:
0

André Kraak

Из этого образца C# SqlParameter[^] похоже, что вы должны использовать

SqlParameter parametrNazwisko = new SqlParameter("Nazwisko", SqlDbType.VarChar, 50);
вместо этого прочь
SqlParameter parametrNazwisko = new SqlParameter("@Nazwisko", SqlDbType.VarChar, 50);

Так что уберите '@- из названия параметра.