Member 13863605 Ответов: 2

Передать параметры из ASP.NET к хранимой процедуре в SQL server и получить данные обратно из хранимой процедуры и просмотреть их на gridview


I want to pass parameters from asp.net to my stored procedure. The parameters would be the value selected by the user from the dropdownlists and then get data back from the stored procedure and display on a Gridview in asp.net when the user clicks the submit button on the webpage. An exception pops up by the Fill method when I try to debug it saying I need to pass parameters. The exception is copied below.

System.Data.SqlClient.SqlException: 'Procedure or function 'Submit' expects parameter '@Address', which was not supplied.'


Что я уже пробовал:

Below is my stored procedure


USE [Database]
    GO
    
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure [Submit]
    @Address varchar(12),
    @Number varchar(5),
    @Name varchar(24),
    @Type varchar(3)
    as 
    begin
        select a.*, b.*
        from Employee as a
        inner join Department as b
        on a.Number = b.Number
        where a.Address = @Address and a.Number = @Number and a.name = @Name and b.Type 
        = @Type 
    end


Below is my .cs code


protected void Button1_Click1(object sender, EventArgs e)
            {
                con.Open();
                string s = "Submit";
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "Submit";
                cmd.Parameters.Add("@Address", SqlDbType.VarChar).Value = DropDownList5.SelectedItem.Value;
                cmd.Parameters.Add("@Number", SqlDbType.VarChar).Value = DropDownList2.SelectedItem.Value;
                cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = DropDownList3.SelectedItem.Value;
                cmd.Parameters.Add("@Type", SqlDbType.VarChar).Value = DropDownList4.SelectedItem.Value;
                SqlDataAdapter da = new SqlDataAdapter(s, con);
                DataSet ds = new DataSet();
                da.Fill(ds);
    
                GridView1.DataSource = ds;
                GridView1.DataBind();
                con.Close();
            }

Bryian Tan

а ваша проблема в чем?

Member 13863605

Исключение выскакивает методом заполнения, когда я пытаюсь отладить его, говоря, что мне нужно передать параметры. Исключение копируется ниже.

System.Data.SqlClient.SqlException: 'процедура или функция 'Submit' ожидает параметр '@Address', который не был указан.'

OriginalGriff

И что же?
Что он делает такого, чего вы не ожидали, или не делает того, что сделали ваши?
Что вы пытались выяснить, почему?
Где ты застрял?
Какая помощь вам нужна?

Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. А это значит, что у нас нет доступа к вашим данным или вашему дисплею - поэтому мы понятия не имеем, что должно происходить, и тем более что происходит на самом деле!

Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Member 13863605

Исключение выскакивает методом заполнения, когда я пытаюсь отладить его, говоря, что мне нужно передать параметры. Исключение копируется ниже.

System.Data.SqlClient.SqlException: 'процедура или функция 'Submit' ожидает параметр '@Address', который не был указан.'

MadMyche

Некоторые примеры передаваемых данных были бы великолепны, наряду с любыми строками из таблиц a &b, которые должны совпадать, а также каковы результаты, когда вы запускаете это в SSMS или аналогичной программе....

2 Ответов

Рейтинг:
1

OriginalGriff

Цитата:
Исключение выскакивает методом заполнения, когда я пытаюсь отладить его, говоря, что мне нужно передать параметры. Исключение копируется ниже.

System.Data.SqlClient.SqlException: 'процедура или функция 'Submit' ожидает параметр '@Address', который не был указан.'

Использовать отладчик, чтобы проверить значения, которые вы передаете в: Помните, что .Чистая null значение будет засчитываться как "параметр не указан", так как ваш SP не позволяет NULL параметр.


Рейтинг:
0

MadMyche

1. Убедитесь, что ваши значения не равны нулю
2. Попробуйте AddWithValue() метод

cmd.Parameters.AddWithValue("@ParameterName", ParameterValue);


Member 13863605

Это не работает. Та же ошибка. Исключение копируется ниже.

System.Data.SqlClient.SqlException: 'процедура или функция 'Submit' ожидает параметр '@Address', который не был указан.'

MadMyche

И вы следовали правилу № 1?

Member 13863605

да, это так. Метод заполнения DataAdapter показывает исключение.

MadMyche

Да, мы понимаем, что метод Fill-это то место, где генерируется исключение, и что исключение заключается в том, что @Address не был указан. Это означало бы, что значение для @Address было нулевым; вопреки правилу № 1, которое совпадает с OG, опубликованным в качестве решения 2