遇见个很奇怪的问题,上面的错误是执行多条件查找的时候报的错误
sql:
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55' or Project_GroupID = '94' )
出的错误。在应使用条件的上下文(在 'Proj' 附近)中指定了非布尔类型的表达式。
在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式。但是在执行
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55')
的时候可以的。
页面上是一个CheckBoxList。根据数据库中的数据生成的复选框。我是根据选中的值进行查询。请遇见过这样的情况的高手们帮帮们。
sql:
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55' or Project_GroupID = '94' )
出的错误。在应使用条件的上下文(在 'Proj' 附近)中指定了非布尔类型的表达式。
在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式。但是在执行
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55')
的时候可以的。
页面上是一个CheckBoxList。根据数据库中的数据生成的复选框。我是根据选中的值进行查询。请遇见过这样的情况的高手们帮帮们。
sb.AppendFormat("1!=1");
foreach (ListItem i1 in CheckBoxList1.Items)
{
if (i1.Selected == true)
{
sb1.AppendFormat(" or Project_GroupID = '{0}'", i1.Value);
} }
这是我生成sql的方法,大哥,大姐,大爷,大妈们,求求各位帮忙了。
function getChecked() {
var IDList = new Array();
var chk = document.getElementsByName("chk");
for (var i = 0; i < chk.length; i++) {
if (chk[i].checked)
IDList.push(chk[i].value);
} return IDList;
}
---
这个主要用于异步传过去。如果你是在后台直接获取,那么同理很好获取。for (int i = 0; i < Grid1.Items.Count; i++)
{
CheckBox cb = (CheckBox)Grid1.Items[i].Cells[1].FindControl("checkbox1");
if (cb.Checked)
{
//组成字符串
}
}
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55')
在代码中可以运行的。页面Gridview中也能取到值
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55' or Project_GroupID = '94' )
只是多了一个OR Project_GroupID = '94',就报错了。
select * from tb_Project_Info where(1!=1 or Project_GroupID = '43' or Project_GroupID = '45' or Project_GroupID = '48' or Project_GroupID = '51' or Project_GroupID = '52' or Project_GroupID = '54' or Project_GroupID = '55' or Project_GroupID = '94' )
注意你最后闭合的那个),用的是中文的另外,这种情况还是用in要好一些。
string str = "select * from tb_Project_Info where(1!=1 or Project_GroupID in ("+strValue+")"
strValue 就是你勾选的值,如:strValue = "44,45"