asp.net +MSSQL 执行存储过程返回DataTable 数据填充问题
好久没有想砸键盘的冲动了,这几天被这问题折磨得想砸电脑了,各位兄弟麻烦帮忙看看,到底哪里有问题!太丢人了,不好意思用原来的账户发,注册个新账户.....不胜感激
场景:
执行存储过程返回DataTable,来源:修改动软的类库的
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
public static DataTable RunProcedureTable(string storedProcName, IDataParameter[] parameters)
{
using (SqlConnection connection = new SqlConnection(connectionStr))
{
using (SqlDataAdapter sqlDA = new SqlDataAdapter())
{
try
{
connection.Open();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
DataTable getdb = new DataTable();
sqlDA.Fill(getdb);
return getdb;
}
catch { return null; }
}
}
}
下面的函数没有动过,构造Command用的
/// <summary>
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand</returns>
private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
{
if (parameter != null)
{
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
command.Parameters.Add(parameter);
}
}
return command;
}
RunProcedureTable 这个函数执行完全正常的,SQL Server Profiler跟踪后发现数据执行完全正常,也返回了值! 但是sqlDA.Fill(getdb)就是返回了空值! 这个函数在其他项目是完全正常的,拷贝过来以后就郁闷了,不知道哪里问题,哪位兄弟看看。。。。。