/// <summary>
/// 获得数据列表(查询条件)——排序
/// </summary>
public DataSet GetListToPage(string strV_CompName, int pageIndex, int pageSize, string sortExpression, string direction)
{
StringBuilder strSql = new StringBuilder(); strSql.Append("select * ");
strSql.Append(" FROM tbl_Company ");
strSql.Append(" where I_OperTpye=1"); if (strV_CompName != "")
{
strSql.Append(" and V_Name like @V_Name");
}
if (sortExpression != "")
{
strSql.Append(" order by @hi");
}
if (direction != "")
{
strSql.Append(" @hello");
} SqlParameter[] parameters = {
new SqlParameter("@V_Name", SqlDbType.VarChar),
new SqlParameter("@hi", SqlDbType.VarChar),
new SqlParameter("hello", SqlDbType.VarChar),
};
parameters[0].Value = "%" + strV_CompName + "%";
parameters[1].Value = sortExpression.ToString();
parameters[2].Value = direction.ToString();
return DBUtility.DbHelperSQL.GetCurrentPage(strSql.ToString(),pageIndex,pageSize,"onetable",parameters);
}为什么order by 后面的条件:用SqlParameter参数设置之后会报错啊,而使用“+”连接符连接却不报错。
但是规定不能使用+号连接。
是不是我设置的哪里有问题啊请遇到过类似情况的朋友帮看一下。
/// 获得数据列表(查询条件)——排序
/// </summary>
public DataSet GetListToPage(string strV_CompName, int pageIndex, int pageSize, string sortExpression, string direction)
{
StringBuilder strSql = new StringBuilder(); strSql.Append("select * ");
strSql.Append(" FROM tbl_Company ");
strSql.Append(" where I_OperTpye=1"); if (strV_CompName != "")
{
strSql.Append(" and V_Name like @V_Name");
}
if (sortExpression != "")
{
strSql.Append(" order by @hi");
}
if (direction != "")
{
strSql.Append(" @hello");
} SqlParameter[] parameters = {
new SqlParameter("@V_Name", SqlDbType.VarChar),
new SqlParameter("@hi", SqlDbType.VarChar),
new SqlParameter("hello", SqlDbType.VarChar),
};
parameters[0].Value = "%" + strV_CompName + "%";
parameters[1].Value = sortExpression.ToString();
parameters[2].Value = direction.ToString();
return DBUtility.DbHelperSQL.GetCurrentPage(strSql.ToString(),pageIndex,pageSize,"onetable",parameters);
}为什么order by 后面的条件:用SqlParameter参数设置之后会报错啊,而使用“+”连接符连接却不报错。
但是规定不能使用+号连接。
是不是我设置的哪里有问题啊请遇到过类似情况的朋友帮看一下。
{
strSql.Append(" order by @hi");
}
if (direction != "")
{
strSql.Append(" @hello");
}
首先你这个有逻辑问题,如果第一个if不执行 生成的sql会报错2 向你这样的sql需要动态执行用 exec(sql)
用存储过程
到SqlServer中执行一下 看看能不能执行
这里的@hi 和@hello是为了让大家看的方便,原来不是这样的字符。我刚才改的时候忘加@了。请问改怎么设置才对呢?
if (direction != "")
{
strSql.Append(sortExpression.Equals("")?"order by @hello":",@hello");
}
ORDER BY 子句所标识的第 1 个 SELECT 项包含了一个变量,该变量位于标识列位置的表达式中。只有排序依据表达式引用的是列名时,才允许在该表达式中使用变量。
要不order by 子句就不要用参数,直接用String构造。
这句代码:
return DBUtility.DbHelperSQL.GetCurrentPage(strSql.ToString(),pageIndex,pageSize,"onetable",parameters); 怎么用exec????