一般用StringBuilder来组织SQL语句(大量字符串操作).
SQL中用 where 1=1 后接的多条件,添加的条件之间就可以用 and 来拼接.
例如
StringBuilder sbSql = new StringBuilder();
sbSql.Append("select * from talbe1 ");
sbSql.Append("where 1=1 ");
if(str1 != null && str1 != "")
{
sbSql.Append("and col1='" + str1.Trim() + "' ");
}
if(str2 != null && str2 != "")
{
sbSql.Append("and col2='" + str2.Trim() + "' ");
}
补充:
数据库中,可供数据查询的有:表(Table)和视图(View),它们的查询方式是一样的.
所以select后面使用表(Table)或视图(View)都是可以的.
差别在于:
视图(View)建立在表(Table)基础之上.已优化查询(Select).
不能对视图(View)进行增(Insert),删(Delete),改(Update)等操作.
我一般是吧条件放到ArrayList里面,手工拼接
ArrayList arr;
arr.Add("条件1");
arr.Add("条件2");
arr.Add("条件3");
StringBuilder b = new StringBuilder();
if(arr.Count > 1)
{
b.Append("(");
for(int i = 0;i < arr.Count;i++)
{
string c = arr[i].ToString();
if(c.Trim().Length > 0)
{
b.Append(arr[i].ToString());
if(i < arr.Count - 1)
{
b.Append(" and ");
}
}
}
b.Append(")");
searchCondition = b.ToString();
}
else if(arr.Count == 1)
{
searchCondition = arr[0].ToString().Trim();
}
else
{
searchCondition = "";
}
string strSql="select * from V_视图 where 1=1";
string strW="";
if (条件1!="")
strW+=" and 字段1='"+条件1+"'";
if (条件2!="")
strW+=" and 字段2='"+条件2+"'";
strSql+=strW
datatable dt=run(strsql);
他那个V_视图就是视图的名称而已,其实你要拼接加个and就可以啦
例如:在Student表中查出成绩scord>60,性别sex为男的学生学号ID ,可以这样写:
select ID from Student where scord>60 and sex=‘男’
就可以了。