C# 如何使用三层架构创建搜索

C# 如何使用三层架构创建搜索,c#,asp.net,search,three-tier,C#,Asp.net,Search,Three Tier,因此,我尝试使用三层结构创建一个搜索,但网上没有太多好的例子,所以我尝试了一下,看看是否可以让它工作,但由于某种原因,它无法工作。你能看看我的代码,看看我做错了什么吗 存储过程: CREATE PROCEDURE [dbo].[GuestSearch] @FirstName varchar(20), @LastName varchar(20), @Phone varchar(15) AS SELECT FirstName, Lastname, Phone

因此,我尝试使用三层结构创建一个搜索,但网上没有太多好的例子,所以我尝试了一下,看看是否可以让它工作,但由于某种原因,它无法工作。你能看看我的代码,看看我做错了什么吗

存储过程:

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+'%'

贝尔

BLL

达尔

用户界面


因此,当我在搜索中键入内容时,gridview应该显示我在文本框中输入的内容,但由于某种原因,我得到的错误是“过程或函数”GuestSearch需要参数“@FirstName”,而该参数未提供。

您需要将参数添加到
公共数据集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”;

您需要将参数添加到
公共数据集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”;

必须将参数添加到
SqlCommand
中。必须将参数添加到
SqlCommand
中。或者可以将存储过程的参数设置为可选:
@FirstName varchar(20)=''
等等。因此我尝试了该方法,但在我的UI数据绑定中返回了此错误:“System.Data.DataRowView”不包含名为“GuestID”的属性。您的
gvGuest
网格似乎需要GuestID字段,但数据源没有。能否将
GuestID
添加到存储过程的select语句中:
select GuestID、FirstName、Lastname、Phone
如果该列未按中的回答显示,则通常会导致此问题。您可以向我们展示您的GridView实现吗?或者您可以将存储过程的参数设置为可选:
@FirstName varchar(20)=''
等等。因此我尝试了该方法,但在我的UI数据绑定中返回了此错误:“System.Data.DataRowView”不包含名为“GuestID”的属性。您的
gvGuest
网格似乎需要GuestID字段,但数据源没有。能否将
GuestID
添加到存储过程的select语句中:
select GuestID、FirstName、Lastname、Phone
如果该列未按中的回答显示,则通常会导致此问题。您可以向我们展示您的GridView实现吗?
public class GuestBEL
    {
        public int GuestID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Phone { get; set; }
    }
public DataSet FindGuest()
        {
            GuestDAL objDAL = new GuestDAL();
            return objDAL.FindGuest();
        }
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;
        }
protected void btnSearch_Click(object sender, EventArgs e)
        {
            DataSet data = new DataSet();
            data = objBLL.FindGuest();
            gvGuest.DataSource = data;
            gvGuest.DataBind();
            readGrid();
        }