1

我们一直在 ASP.NET 应用程序中遇到 ADO.NET 命令的问题,我们已将其归结为...

没有返回错误,但 dataadapter.fill 命令只返回 0 行。

这只发生在某些时候,绝大多数时候,查询正常执行。我们知道 SQL server 没有返回错误(使用 sql profiler),并且查询应该返回了结果(重新运行 dataadapter.fill 确实返回了一些行并且这些行一直存在于数据库中)这似乎发生了仅当我们打开 ado.net 连接池并且服务器负载过重时。

我们正在使用 SqlClient 连接/命令对象并连接到 SQL Server 数据库(到目前为止,我们已经在 SQL 2005 和 SQL 2008 中看到了这种行为)

4

1 回答 1

0

select 语句是否返回多个结果集?如果是,那么您可能想要使用:

using(DbDataAdapter dataAdapter = _providerFactory.CreateDataAdapter())
{
  dataAdapter.TableMappings.AddRange(tableMappings);
  dataAdapter.SelectCommand = selectCommand;

  // This is crucial for HasChanges() to return the correct value
  dataAdapter.AcceptChangesDuringFill = false;

  MyTypedDataSet dataSet = new MyTypedDataSet();
  dataSet.EnforceConstraints = false;
  dataAdapter.Fill(dataSet);
  bool hasData = dataSet.HasChanges();
  return hasData;
}
于 2013-08-13T02:13:06.013 回答