Как создать поиск с использованием трехуровневой архитектуры - PullRequest
1 голос
/ 02 мая 2019

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

Хранимая процедура:

CREATE PROCEDURE [dbo].[GuestSearch]
    @FirstName varchar(20),
    @LastName varchar(20),
    @Phone varchar(15)
AS
    SELECT FirstName, Lastname, Phone
    FROM Guest
    WHERE FirstName LIKE '%'+@FirstName+'%'
    AND LastName LIKE '%'+@LastName+'%' AND
    Phone LIKE '%'+@Phone+'%'

BEL

public class GuestBEL
    {
        public int GuestID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Phone { get; set; }
    }

BLL

public DataSet FindGuest()
        {
            GuestDAL objDAL = new GuestDAL();
            return objDAL.FindGuest();
        }

DAL

public DataSet FindGuest()
        {
            DataSet dts = new DataSet();
            SqlCommand cmd = new SqlCommand("GuestSearch", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter adapt = new SqlDataAdapter(cmd);
            con.Open();
            adapt.Fill(dts);
            cmd.Dispose();
            dts.Dispose();
            con.Close();
            return dts;
        }

UI

protected void btnSearch_Click(object sender, EventArgs e)
        {
            DataSet data = new DataSet();
            data = objBLL.FindGuest();
            gvGuest.DataSource = data;
            gvGuest.DataBind();
            readGrid();
        }

Итак, когда я что-то печатаю в поиске, в виде сетки должно отображаться то, что я поместил в текстовое поле, но по какой-то причине ошибкая получаю, что 'Процедура или функция' GuestSearch 'ожидает параметр' @FirstName ', который не был предоставлен.'

1 Ответ

0 голосов
/ 02 мая 2019

Вам необходимо добавить параметры в функцию Command in public DataSet FindGuest():

cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = "somename";
cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = "somelastname";
cmd.Parameters.Add("@Phone", SqlDbType.VarChar).Value = "somephone";
...