我们有一个用于从应用程序连接到SQL Server2005的DbDataReader。我想知道如何为DbDataReader设置以下两项
1)池化= false
2)连接Timeout=0;
请分享你的想法。
DbCommand cmd = db.GetStoredProcCommand("aspInsertZipCode");
cmd.CommandTimeout = 0;
dataStringToProcess.Remove(dataStringToProcess.Length - 1, 1);
db.AddInParameter(cmd, "@DataRows", DbType.String, dataStringToProcess.ToString());
db.AddInParameter(cmd, "currDate", DbType.DateTime, DateTime.Now);
db.AddInParameter(cmd, "userID", DbType.Int32, UserID);
db.AddOutParameter(cmd, "CountOfUnchangedZipCode", DbType.String, 1000);
DbDataReader rdr = null;
try
{
rdr = (DbDataReader)db.ExecuteReader(cmd);
if (rdr.Read())
{
if (!String.IsNullOrEmpty(Utility.GetString(rdr, "NewZipCode")))
strNewZipCode = strNewZipCode + "," + Utility.GetString(rdr, "NewZipCode");
}
rdr.NextResult();
if (rdr.Read())
{
strRetiredZipCode = strRetiredZipCode + "," + Utility.GetString(rdr, "RetiredZipCode");
}
int TempUnchageZipCount = Convert.ToInt32(db.GetParameterValue(cmd, "CountOfUnchangedZipCode"));
CountOfUnchangedZipCode = CountOfUnchangedZipCode + TempUnchageZipCount;
dataStringToProcess = new StringBuilder();
cntRec = 0;
}
catch
{
if (rdr != null && (!rdr.IsClosed))
rdr.Close();
throw;
}
finally
{
if (rdr != null && (!rdr.IsClosed))
rdr.Close();
}
cmd.Dispose();
谢谢
发布于 2011-07-22 19:29:05
连接池由特定的提供程序处理。您使用的是抽象的DbConnection
,但例如,Sql Server通过连接字符串处理连接池和超时,例如:
SERVER=127.0.0.1;Database=MyDatabase;Integrated Security=true;Timeout=0;Pooling=false;
你使用的到底是什么提供商?
另外,禁用连接池和超时需要什么原因?这两个功能都是高效的功能,可以极大地提高应用程序的性能。通过禁用这些,并拥有一些行为糟糕的代码,您可能会得到一个相当不稳定的最终解决方案,这会占用内存,并可能导致未终止的连接……?
https://stackoverflow.com/questions/6789243
复制相似问题