日期:2014-05-18  浏览次数:20514 次

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( " ' ", " ")把 '替换掉