关于调用存储过程返回参数的问题。
public static DataSet RunProcedurePage(string storedProcName, IDataParameter[] parameters, string tableName, out int recordCount, out int pageCount)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
recordCount = (int)sqlDA.SelectCommand.Parameters["@RecordCount"].Value;
pageCount = (int)sqlDA.SelectCommand.Parameters["@PageCount"].Value;
string xx = sqlDA.SelectCommand.Parameters["@str"].Value.ToString();
connection.Close();
return dataSet;
}
}
用这种方法 recordCount =2,pageCount =2 ,xx =output
直接 SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@Tables", SqlDbType.VarChar));
command.Parameters[0].Value = "FileList"; 省略。。。。。
SqlDataAdapter sqlDA = new SqlDataAdapter(command);
sqlDA.Fill(dataSet, tableName);
recordCount = (int)command.Parameters["@RecordCount"].Value;
pageCount = (int)command.Parameters["@PageCount"].Value;
string xx = command.Parameters["@str"].Value.ToString();
这样返回的值就是正常的 。。。。。。就是传入parameters 就不行 。直接添加 parameters就得到正确的返回值
传入的parameters 跟直接写的是一模一样的。 两者dataSet 都有数据返回而且数据是一致的。就是第一个得不到返回参数。求解