出错方法如下:
/// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from Admin");
strSql.Append(" where @strWhere ");
SqlParameter[] parameters = {
new SqlParameter("@strWhere", SqlDbType.VarChar,2000)};
parameters[0].Value = strWhere;
return DbHelperSQL.Exists(strSql.ToString(), parameters);
}
方法的作用是查找某个表中是否存在指定Where的记录。其中我把Where后面的内容全都当成一个SqlParameter。提示出错为:@strWhere附近发生错误!后来发现出错的地方是SqlParameter应该指代一个参数,而不是一段SQL。即:如果正常运行,@strWhere指代的可能是“字段1=值1 And 字段2 = 值2...”,这就是一段SQL代码,而不仅仅是一个参数。这段SQL代码中,参数只有“值1”、“值2”...所以如果要用SqlParameter指代SQL中的内容,必须指代值。而不能是一段SQL代码!
修改后的上述方法应为(不需要用SqlParameter):
/// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from Admin");
if (strWhere != "")
strSql.Append(" where " + strWhere);
return DbHelperSQL.Exists(strSql.ToString());
}