asp.net +MSSQL 执行存储过程返回DataTable 数据填充问题

yuanyi204611 2012-04-28 11:53:27
好久没有想砸键盘的冲动了,这几天被这问题折磨得想砸电脑了,各位兄弟麻烦帮忙看看,到底哪里有问题!太丢人了,不好意思用原来的账户发,注册个新账户.....不胜感激



场景:

执行存储过程返回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)就是返回了空值! 这个函数在其他项目是完全正常的,拷贝过来以后就郁闷了,不知道哪里问题,哪位兄弟看看。。。。。
...全文
115 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
广交天下好友 2012-04-28
  • 打赏
  • 举报
回复
如果你哪个两个方法,其他项目用 没有问题。

那说明 你调用存储过程 其他底层方法写的有问题。

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧