C# 尝试在telerik编码的步骤中使用Excel中的数据运行存储过程时出错

C# 尝试在telerik编码的步骤中使用Excel中的数据运行存储过程时出错,c#,sql-server,visual-studio-2010,telerik,C#,Sql Server,Visual Studio 2010,Telerik,我正在尝试运行一个SQL Server存储过程,该过程从excel工作表中获取输入参数,这给我带来了一个错误 System.Data.SqlClient.SqlException 0x80131904:列名“CreatedDate DESC”无效 代码: 我有另一个测试脚本,它使用测试脚本中直接提供的输入值运行相同的存储过程,效果很好 SqlConnection conn = new SqlConnection(connStr); string SP = "dbEmail_Me

我正在尝试运行一个SQL Server存储过程,该过程从excel工作表中获取输入参数,这给我带来了一个错误

System.Data.SqlClient.SqlException 0x80131904:列名“CreatedDate DESC”无效

代码:

我有另一个测试脚本,它使用测试脚本中直接提供的输入值运行相同的存储过程,效果很好

SqlConnection conn = new SqlConnection(connStr);

        string SP = "dbEmail_Message_GetMessageListForFolder";
        SqlCommand cmd = new SqlCommand(SP, conn);

        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        cmd.Parameters.Add("@strCurrentUser", SqlDbType.VarChar);
        cmd.Parameters["@strCurrentUser"].Value = "derek";

        cmd.Parameters.Add("@intCurrentSite", SqlDbType.Int);
        cmd.Parameters["@intCurrentSite"].Value = 19;

        cmd.Parameters.Add("@intStatus", SqlDbType.Int);
        cmd.Parameters["@intStatus"].Value = 0;

        cmd.Parameters.Add("@blnSentMailOnly", SqlDbType.Int);
        cmd.Parameters["@blnSentMailOnly"].Value = 0;

        cmd.Parameters.Add("@strSortBy", SqlDbType.VarChar);
        cmd.Parameters["@strSortBy"].Value = "CreatedDate DESC";

        cmd.Parameters.Add("@intToSite", SqlDbType.Int);
        cmd.Parameters["@intToSite"].Value = 12;

        cmd.Parameters.Add("@SubCategory", SqlDbType.VarChar);
        cmd.Parameters["@SubCategory"].Value = "RouteToPCPRequest";

        cmd.Parameters.Add("@intPageIndex", SqlDbType.Int);
        cmd.Parameters["@intPageIndex"].Value = 1;

        cmd.Parameters.Add("@strToUserName", SqlDbType.VarChar);
        cmd.Parameters["@strToUserName"].Value = "hunterjane";

        cmd.Parameters.Add("@intPageSize", SqlDbType.Int);
        cmd.Parameters["@intPageSize"].Value = 100;

        cmd.Parameters.Add("@Category", SqlDbType.VarChar);
        cmd.Parameters["@Category"].Value = "OnlineNotification";

        SqlParameter rowCount = cmd.Parameters.Add("@intTotalRecords", System.Data.SqlDbType.Int);
        rowCount.Direction = System.Data.ParameterDirection.Output;

        cmd.Connection = conn;
        conn.Open();

        SqlDataReader alertReader = cmd.ExecuteReader();
整个错误日志粘贴在下面:

故障信息: ~~~~~~~~~~~~~~~ 执行编码步骤时引发异常:'[VerifyAlerts_CodedStep2]:验证'div'的数量是否等于'alerts'的数量。 内部异常: System.Data.SqlClient.SqlException 0x80131904:列名“CreatedDate DESC”无效。 位于System.Data.SqlClient.SqlConnection.OneErrorSqlException异常、布尔断开连接、Action1 wrapCloseInAction 位于System.Data.SqlClient.SqlInternalConnection.OnErrorSqlException异常、布尔断开连接、Action1 wrapCloseInAction 在System.Data.SqlClient.TdsParser.throwexception和warningdsparserstateObject stateObjectStateObj中,调用布尔连接锁,布尔异步关闭 位于System.Data.SqlClient.TdsParser.TryRunRunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady 在System.Data.SqlClient.SqlDataReader.TrySetMetaData\u SqlMetaDataSet元数据中,布尔值moreInfo 位于System.Data.SqlClient.TdsParser.TryRunRunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady 位于System.Data.SqlClient.SqlDataReader.tryconsumedata 位于System.Data.SqlClient.SqlDataReader.get_元数据 在System.Data.SqlClient.SqlCommand.FinishExecuteReaderSqlDataReader ds中,运行行为RunBehavior,字符串重置选项String 位于System.Data.SqlClient.SqlCommand.RunExecuteReaderTsCommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、Boolean async、Int32超时、任务和任务、Boolean asyncWrite、SqlDataReader ds 位于System.Data.SqlClient.SqlCommand.RunExecuteReaderCommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法、TaskCompletionSource`1 completion、Int32超时、任务和任务、Boolean asyncWrite 位于System.Data.SqlClient.SqlCommand.RunExecuteReaderCommandBehavior cmdBehavior,RunBehavior RunBehavior,Boolean returnStream,String方法 在System.Data.SqlClient.SqlCommand.ExecuteReaderCommandBehavior中,字符串方法 位于System.Data.SqlClient.SqlCommand.ExecuteReader 在Communicator.Alerts.Alerts\u VerifyDivScont\u with Database.Alerts\u VerifyDivScont\u with Database\u of Copy\u CodedStep的c:\tfs\HASINC\Development\QAAutomation\Communicator\Alerts\u VerifyDivScont\u with Database-Copy.tstest.cs:第123行 客户连接ID:a4f49f47-65aa-4e0d-af2c-8791d3f2f610


有人能告诉我哪里出错了吗?

CreatedDate DESC看起来应该在ORDER BY子句中,而不是在列名列表中,但我没有看到异常来自的SQL代码。

当我直接将输入作为cmd.Parameters时。Add@strSortBy,SqlDbType.VarChar;cmd.Parameters[@strSortBy].Value=CreatedDate DESC;它是有效的。但是当我尝试像cmd.Parameters这样的操作时。Add@strSortBy,SqlDbType.VarChar;cmd.Parameters[@strSortBy].Value=demoWorksheet.get_range2,E2.Value2;它抛出errorCheck值的类型2。它是一个字符串吗?可能还想看看这个线程,看看生成的SQL是什么:啊哈!Value2属性和Value属性之间的唯一区别在于Value2属性不使用货币和日期数据类型。通过使用双精度数据类型,可以将使用这些数据类型格式化的值返回为浮点数。当你提示我检查值2时,我刚读到这篇文章。我把它用作日期栏。。所以我认为这就是问题所在
SqlConnection conn = new SqlConnection(connStr);

        string SP = "dbEmail_Message_GetMessageListForFolder";
        SqlCommand cmd = new SqlCommand(SP, conn);

        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        cmd.Parameters.Add("@strCurrentUser", SqlDbType.VarChar);
        cmd.Parameters["@strCurrentUser"].Value = "derek";

        cmd.Parameters.Add("@intCurrentSite", SqlDbType.Int);
        cmd.Parameters["@intCurrentSite"].Value = 19;

        cmd.Parameters.Add("@intStatus", SqlDbType.Int);
        cmd.Parameters["@intStatus"].Value = 0;

        cmd.Parameters.Add("@blnSentMailOnly", SqlDbType.Int);
        cmd.Parameters["@blnSentMailOnly"].Value = 0;

        cmd.Parameters.Add("@strSortBy", SqlDbType.VarChar);
        cmd.Parameters["@strSortBy"].Value = "CreatedDate DESC";

        cmd.Parameters.Add("@intToSite", SqlDbType.Int);
        cmd.Parameters["@intToSite"].Value = 12;

        cmd.Parameters.Add("@SubCategory", SqlDbType.VarChar);
        cmd.Parameters["@SubCategory"].Value = "RouteToPCPRequest";

        cmd.Parameters.Add("@intPageIndex", SqlDbType.Int);
        cmd.Parameters["@intPageIndex"].Value = 1;

        cmd.Parameters.Add("@strToUserName", SqlDbType.VarChar);
        cmd.Parameters["@strToUserName"].Value = "hunterjane";

        cmd.Parameters.Add("@intPageSize", SqlDbType.Int);
        cmd.Parameters["@intPageSize"].Value = 100;

        cmd.Parameters.Add("@Category", SqlDbType.VarChar);
        cmd.Parameters["@Category"].Value = "OnlineNotification";

        SqlParameter rowCount = cmd.Parameters.Add("@intTotalRecords", System.Data.SqlDbType.Int);
        rowCount.Direction = System.Data.ParameterDirection.Output;

        cmd.Connection = conn;
        conn.Open();

        SqlDataReader alertReader = cmd.ExecuteReader();