【发布时间】:2011-06-27 09:35:04
【问题描述】:
我收到了这个奇怪的错误,我检查了 sort 的值,它也不是 null 仍然给我的代码错误。
public static List<MyDb_student> GetAllUsers(String sort, CustomPaging paging)
{
con.Open();
SqlCommand objParams = new SqlCommand();
objParams.Parameters.Add("@SortExpression",SqlDbType.VarChar).Value = sort;
objParams.Parameters.Add("@StartRowIndex",SqlDbType.Int).Value = paging.startRow;
objParams.Parameters.Add("@MaximumRows",SqlDbType.Int).Value = paging.maxRow;
objParams.CommandType = System.Data.CommandType.StoredProcedure;
objParams.CommandText = "clud_GetAllUsers";
objParams.Connection = con;
SqlDataAdapter objSda = new SqlDataAdapter(objParams.CommandText, con);
DataSet objDS = new DataSet();
objSda.Fill(objDS);
//to inialize the list.
List<MyDb_student> lstStudent = new List<MyDb_student>();
//to itereate through the data row.
foreach (DataRow dr in objDS.Tables[0].Rows)
{
//passing each row to the constructor to dump the values in the constructor.
MyDb_student objStu = new MyDb_student(dr);
//adding the value to the list by passing the object.
lstStudent.Add(objStu);
}
con.Close();
return lstStudent;
}
我的存储过程
ALTER PROCEDURE [dbo].[clud_GetAllUsers]
@SortExpression VARCHAR(100),
@StartRowIndex INT,
@MaximumRows INT
AS
BEGIN
IF LEN(@sortExpression) = 0
SET @sortExpression = 'UserID'
DECLARE @sql nvarchar(4000)
SET @sql = 'SELECT * FROM (
SELECT UserID,UserName,EmailID,MobileNO,ROW_NUMBER() OVER (ORDER BY ' + @SortExpression + ' desc) AS RowRank
FROM UserRegistration )
AS UserRegistrationWithRowNumbers
WHERE RowRank > ' + CONVERT(nvarchar(10), @StartRowIndex) +
' AND RowRank <= (' + CONVERT(nvarchar(10), @StartRowIndex) + ' + '
+ CONVERT(nvarchar(10), @MaximumRows) + ')'
EXEC sp_executesql @sql
END
我无法修复它。
【问题讨论】:
-
如果你设置了一个存储过程默认值,你会得到更多的错误吗?
-
事实上,这个错误很可能不是来自那个代码
-
尝试从sql执行stor proc
-
我做到了,它工作正常
-
不使用数据集..你可以用sqldatareader检查吗?
标签: asp.net sql-server-2005 ado.net