asp.net菜鸟 模糊查询问题?
本人刚学C#.好多不懂的地方还请大哥大姐们请教请教! 谢谢~~
下面是本人看教程做的模糊查询(点下去没反应汗死!!)好简单也会出错~~:
首先有个work.cs类有关内容:
public static DataTable selectpersontable()
{
SqlConnection con=work.connection();
con.Open();
SqlDataAdapter sdr=new SqlDataAdapter();
sdr.SelectCommand=new SqlCommand( "select * from person ",con);
DataSet ds=new DataSet();
sdr.Fill(ds, "person ");
return ds.Tables[ "person "];
(已定义连接数据库, 表名为person)
(CheckBox1 的text值为 "按编号查询 " pid是一个 "textbox控件 " 记录的是表person中的 "id "列 同时界面还有个DataGrid 控件显示表)
查询按扭代码:
private void Button1_Click(object sender, System.EventArgs e)
{
string c= " ";
if(this.CheckBox1.Checked)
{
c= "id= "+this.pid.Text;
}
else
{
c= "id like '% ' ";
}
DataView dv=new DataView(work.selectpersontable());
dv.RowFilter=c;
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
}
------解决方案--------------------c= "id like '% ' ";有问题貌似..
------解决方案--------------------1、你的id字段是什么类型,如果是int型,不需要改,如果是varchar等类型
c= "id= "+this.pid.Text;
---->
c= "id= ' "+this.pid.Text.Replace( " ' ", " ")+ " ' ";
2、模糊查询,即CheckBox1 不选中时
c= "id like '% ' ";
---->
c= "id like '% "+this.pid.Text.Replace( " ' ", " ")+ "% ' ";
至于这里前后是否加%,看你自己想实现什么样的模糊查询效果而定吧
3、按以上修改后,如果仍不显示,在这里设个断点
this.DataGrid1.DataSource=dv;
看是否取得数据了
------解决方案--------------------1、你的id字段是什么类型,如果是int型,不需要改,如果是varchar等类型
c= "id= "+this.pid.Text;
---->
c= "id= ' "+this.pid.Text.Replace( " ' ", " ")+ " ' ";
2、模糊查询,即CheckBox1 不选中时
c= "id like '% ' ";
---->
c= "id like '% "+this.pid.Text.Replace( " ' ", " ")+ "% ' ";
至于这里前后是否加%,看你自己想实现什么样的模糊查询效果而定吧
3、按以上修改后,如果仍不显示,在这里设个断点
this.DataGrid1.DataSource=dv;
------解决方案--------------------private void Button1_Click(object sender, System.EventArgs e)
{
string c= " ";
if(this.CheckBox1.Checked)
{
c= "id= "+this.pid.Text;
}
else
{
c= "id like '% "+thi.pid.Text+ "% ' ";
}
DataView dv=new DataView(work.selectpersontable());
dv.RowFilter=c;
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
}
试一下
------解决方案--------------------%是SQL 模糊查询的语法,匹配0个或多个字符
Replace( " ' ", " ")把 '替换掉