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

现在有4个textbox 根据他们的值进行查询
C# code

用户名<asp:TextBox ID="edtUserID" runat="server"></asp:TextBox>
姓名<asp:TextBox ID="edtName" runat="server"></asp:TextBox>
警号<asp:TextBox ID="edtPoliceNumber" runat="server"></asp:TextBox>
部门<asp:TextBox ID="edtDepartment" runat="server"></asp:TextBox>



有上面4个txtbox 用户不一定输入哪个···

然后进行查询···
该怎么做比较好啊???

------解决方案--------------------
select * from table where userid = this.edtUserID.Text or Name = this.edtName.Text 
or policeNumber = this.edtPoliceNumber.Text or department = this.edtDepartment.Text
------解决方案--------------------
string strSql="select * from table where 1=1";
if(edtUserID.Text!="")
{
strSql+=" and userid='"+edtUserID.Text+'";
}
其他依此類推
------解决方案--------------------
你给你的参数都设置一个默认值 

假设默认值是-1

可以像这么写(条件=-1 or 条件=用户输入条件)and 后面的差不多的
------解决方案--------------------
判断是否为空,查询不为空的

如果是多个查询,那就联合查询
------解决方案--------------------
就这个方法比较好,一般多项查询都是这样做的
------解决方案--------------------
C# code
string strSql="select * from table where 1=1"; 
strSql+=string.IsNullOrEmpty(edtUserID.Text.Trim())?"":" and userid='"+edtUserID.Text.Trim()+"'"; 
strSql+=string.IsNullOrEmpty(edtName.Text.Trim())?"":" and username='"+edtName.Text.Trim()+"'"; 
strSql+=string.IsNullOrEmpty(edtPoliceNumber.Text.Trim())?"":" and useredtPoliceNumber='"+edtedtPoliceNumber.Text.Trim()+"'"; 
strSql+=string.IsNullOrEmpty(edtDepartment.Text.Trim())?"":" and userdepartment='"+edtDepartment.Text.Trim()+"'";

------解决方案--------------------
引用:
select * from table where userid = this.edtUserID.Text or Name = this.edtName.Text
or policeNumber = this.edtPoliceNumber.Text or department = this.edtDepartment.Text 
 

这是个好办法 ·· 我怎么没想到呢··· 
呵呵···
這個方法查出來的是會有問題的
------解决方案--------------------
string sql = "select top 10 * from tablename where 1=1";
If(txtBox1.Text.Length > 0)
{
sql+= " AND field1='" + txtBox1.Text + "'";
}
.......
If(txtBox4.Text.Length > 0)
{
sql+= " AND field2='" + txtBox4.Text + "'";
}
------解决方案--------------------

 保证后面查询条件都为空时能照样查询
------解决方案--------------------
一楼的答案是一个。你也可以自己编写一个判断程序了进行判断啊哪些TextBox中有数据哪些没有。
------解决方案--------------------
7楼的方法可行!
------解决方案--------------------
写个proc 
将四个文本框中的值作为参数传入

create proc procname
@用户名 nvarchar(20)
@姓名 nvarchar(20)
@警号 nvarchar(20)
@部门 nvarchar(20)
as
select 
...
from
...
where 
(@用户名='' or 用户名=@用户名)