Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
参数化查询ado.net问题_.net_Sql_Ado.net - Fatal编程技术网

参数化查询ado.net问题

参数化查询ado.net问题,.net,sql,ado.net,.net,Sql,Ado.net,我正在使用此查询进行分页 string selectStatement = "SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY @sortMember @sortDirection ) AS RowNum, * FROM School) AS Rows WHERE RowNum > @pageFrom AND RowNum < @pageTo "; command.Parameters.Add("@sortDirection",

我正在使用此查询进行分页

string selectStatement = "SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY @sortMember @sortDirection ) AS RowNum, * FROM School) AS Rows WHERE RowNum > @pageFrom AND RowNum < @pageTo ";

command.Parameters.Add("@sortDirection", System.Data.SqlDbType.NVarChar, 50);
command.Parameters["@sortDirection"].Value = cmd.SortDescriptors.Count == 0 ? "" : cmd.SortDescriptors[0].SortDirection == System.ComponentModel.ListSortDirection.Ascending ? "" : "DESC";
如果sortDirection是,我会得到一个异常。 如果你像这样使用它,它工作得很好,但我想让它参数化查询。解决办法是什么

 string selectStatement = string.Format("SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY @sortMember {0} ) AS RowNum, * FROM School) AS Rows WHERE RowNum > @pageFrom AND RowNum < @pageTo ",System.ComponentModel.ListSortDirection.Ascending ? "" : "DESC); 

我得到的例外是:“@sortDirection”附近的语法不正确。

您不能参数化表名、列、排序依据等内容。它们是查询。您需要列出期望值以避免SQL注入,并将其直接连接到查询中,这就是string.Format用法的作用


目前,orderby位于变量的值上,每行不变。本质上,写入的排序被忽略。

您不能参数化诸如表名、列、排序依据等内容。它们是查询。您需要列出期望值以避免SQL注入,并将其直接连接到查询中,这就是string.Format用法的作用


目前,orderby位于变量的值上,每行不变。基本上,写入的排序被忽略。

这不是参数的工作方式。您必须动态构建查询字符串。

参数不是这样工作的。您必须动态生成查询的字符串。

检查@sortDirection是否有效,或者给它一个默认值?检查@sortDirection是否有效,或者给它一个默认值?