我正在尝试执行存储过程,但以下行给了我麻烦:
result = this.sqlDalExternal.ExecuteStoredProcedure(SqlCommonExecutionType.DataTableResult, sqlCommand) as DataTable;
永远不会调用ExecuteStoredProcedure方法。调试时,我可以从一行到另一行(如预期的那样)。然后,当我在这条线上并且想要进入时,它只是跳到捕获(例外e)。 result的值为null。
sqlCommand.CommandText设置为存储过程名称。为什么this.sqlDalExternal.ExecuteStoredProcedure方法从未被调用?
private DataTable ExecuteStoredProcedure(string storedProcedureName, Collection<SqlParameter> parameters)
{
DataTable result = null;
try
{
SqlCommand sqlCommand = new SqlCommand(storedProcedureName);
if (parameters != null)
foreach (SqlParameter parameter in parameters)
sqlCommand.Parameters.Add(parameter);
result = this.sqlDalExternal.ExecuteStoredProcedure(SqlCommonExecutionType.DataTableResult, sqlCommand) as DataTable;
}
catch(Exception e)
{
throw new ExternalSystemAdapterException(9102, e.ToString());
}
return result;
}
答案 0 :(得分:1)
也许是因为签名在被调用方法和你想调试的方法之间不匹配? :)
你打电话:
ExecuteStoredProcedure(SqlCommonExecutionType, 的SqlCommand)
您调试的方法:
ExecuteStoredProcedure(字符串, 集合)
...
答案 1 :(得分:1)
“抓住了NullReferenceException”。在它下面说“对象引用未设置为对象的实例”。
表明this.sqlDalExternal
是null
,因此解释了为什么永远不会调用该方法(因为没有对象可以调用它)。