c# - 如何使用三层架构创建搜索
问题描述
因此,我正在尝试使用三层创建搜索,并且在线上没有很多好的示例,因此我尝试了它是否可以使其工作,但由于某种原因它无法正常工作。你能看看我的代码,看看我做错了什么吗?
存储过程:
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+'%'
贝尔
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();
}
达尔
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();
}
因此,当我在搜索中键入内容时,gridview 应该显示我在文本框中输入的内容,但由于某种原因,我得到的错误是“过程或函数‘GuestSearch’需要参数‘@FirstName’,但未提供。”
解决方案
您需要将参数添加到Command
inpublic 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";
推荐阅读
- android - 【Android Studio】构建项目时显示Cause: unable to find valid authentication path to requested target
- laravel - WHERE 内部 DB::raw 语句返回 0
- python - 计算 Python 中元素的出现次数
- regex - 提取电话号码
- typescript - 无法使 tsconfig 路径正常工作 (TS2307)
- typescript - Docker 中的打字稿:Visual Studio 代码主机打字稿编译器中的“找不到模块”
- java - PhoneAuthProvider.OnVerificationStateChangedCallbacks 没有被解雇
- python - 在新的内部窗口 django、python 中打开链接
- python - 我很困惑为什么这不会打印我的文本文件
- java - 以另一种方法返回更新值