我们在ASP.NET应用程序中遇到过ADO.NET命令的问题,我们已将其归结为此...
不返回任何错误,而是dataadapter.fill命令只返回0行。
这只会在某些时候发生,绝大多数情况下,查询会正常执行。 我们知道SQL服务器没有返回错误(使用sql profiler),并且查询应该返回一个结果(重新运行dataadapter.fill会返回一些行,并且数据库中始终存在行) 这似乎只有在我们打开ado.net连接池并且服务器负载很重时才会发生。
我们正在使用SqlClient连接/命令对象并连接到SQL Server数据库(到目前为止,我们已经看到了SQL 2005和SQL 2008的这种行为)
答案 0 :(得分: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;
}