코드베이스에 눈부신 오류가 있는지 확인하려고합니다.IDataReader를 삭제하지 않으면 연결이 풀로 반환됩니까?
해당 코드는 IDataReader를 반환하는 타사 DLL을 호출합니다. 코드가 처리기없이 처리기를 사용하면 코드가 명시 적으로 풀로 반환되지 않습니다. 맞습니까? 여기
가 호출 코드입니다 : 여기IDataReader rdr = db.ExecSPGetDataReader("dbo.someStoredProcedure", paramList);
if (rdr.Read())
{
List<nameValuePair> formValues = Utils.nameValuePairs(rdr["valuepairs"].ToString());
foreach (nameValuePair nvp in formValues)
{
if (nvp.name.ToLower() == "name")
{
outString = nvp.value;
break;
}
}
}
디 컴파일 타사 DLL 코드의 : 명령이 아마 연결을 처분 할 목적으로 처리됩니다처럼 보이는
public IDataReader ExecSPGetDataReader(string sp, List<param> paramList)
{
IDataReader dataReader;
using (DbCommand dbC = this.setDBCommand(sp, paramList, true))
{
IDataReader dr = this._db.ExecuteReader(dbC);
this.setOutputParams(dbC, paramList);
dataReader = dr;
}
return dataReader;
}
,하지만 그게 사실이라면 반환 된 IDataReader에서 무엇을 읽을 수 있습니까?
반환 된'IDataReader'가 제대로 작동하려면'DbCommand'를 유지해야합니까? – spender
맨손으로 데이터를 읽는 사람이 드러나는 것은 끔찍한 디자인입니다. 나는 너를 부러워하지 않는다. 최소한 데이터를 읽은 후에는 반드시 처분해야합니다. –
@spender 그게 내가 가진 질문이다. 내가 생각하고있는 것은 IDataReader가 데이터베이스 연결에 걸려 있다는 것입니다. – MStodd