小弟有查询数据库函数。有两个参数,参数1为表中的字段名,参数2为该字段值。如下代码,现已对value进行了参数化。现在想对columnName也进行参数化,该如何写?谢谢
 public DataTable GetListByColumn(string columnName, Object value)
        {
            string sequel = "select * from [product_deliver] " + " Where [" + columnName + "] =@Value ";
            SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@Value", value) };
            DataTable dt = SqlHelper.ExecuteDataSet(Configuration.ConnectionString, CommandType.Text, sequel, paras).Tables[0];            return dt;
        }

解决方案 »

  1.   


    参见类似代码:
    StringBuilder strSql = new StringBuilder();
                    strSql.Append("SELECT * ");
                    strSql.Append(" FROM Customer ");
                    strSql.Append(" WHERE "+this.LinkSql(cusList));
                    SqlParameter[] parameters ={
                        new SqlParameter("@QueryStr",SqlDbType.VarChar,4000),  //改为3000
                        new SqlParameter("@PageSize",SqlDbType.Int),
                        new SqlParameter("@PageCurrent",SqlDbType.Int),     
                        new SqlParameter("@FdShow",SqlDbType.VarChar,4000),   //改为200
                        new SqlParameter("@FdOrder",SqlDbType.VarChar,1000),  //改为200
                     };
                    parameters[0].Value = strSql.ToString().Trim();
                    parameters[1].Value = 30;
                    parameters[2].Value = PageCurrent;
                    parameters[3].Value = "";
                    parameters[4].Value = " cCode desc ";                DataSet ds = DbHelperSQL.RunProcedure("PageQuery", parameters, "CustomerList");
                    return ds;
      

  2.   


    两参数一个是string 一个是int,如果照你说的那样的话会报错:(大概是不能将int转为varchar) 类似的
      

  3.   

    Where  [cast (@columnName  as varchar(20)]
      

  4.   

    列名 'cast(@columnName as varchar(20)) ' 无效。 
      

  5.   

    先将@columnName的值转化为string 再Where @columnName 不过这跟@columnName 的类型似乎没什么关系