2009-12-16 4 views
0

리피터의 databind 메소드 호출이 이루어지면 데이터베이스 연결이 자동으로 닫힙니 까?asp.net; repeater.databind 및 데이터베이스 연결 닫기

여기에 ent에 대한 래퍼 클래스 메서드 내에 포함 된 코드 스 니펫이 있습니다. lib.

public SqlDataReader RunQuery(string strQuery) 
{ 
    Database db = DatabaseFactory.CreateDatabase(); 
    string sqlCommand = strQuery; 
    DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand); 
    return (SqlDataReader)db.ExecuteReader(dbCommand,CommandBehavior.CloseConnection); 
} 

프리젠 테이션 계층은 래퍼 클래스의 방법이 그것을 할 수있는 권리 방법이

SQLwrap sr = new SQLwrap(); 
Repeater1.DataSource = sr.RunQuery("select ...."); 
Repeater1.DataBind(); 

같은 위의 코드를 포함하는 호출?

나는 오래 전 repeater.databind가 자동으로 연결을 닫는다 고 생각하지만, 지금은 그것에 대해 확실하지 않습니다.

정상적으로 연결이 끊어지면 리피터가 아닌 경우 어떻게 연결이 닫혔는지 확인하십시오.

감사합니다.

답변

0

예. 명령이 호출되고 u 리가 리턴 된 후 모든 DB 연결이 닫힙니다.

함수에서 DB 개체를 만들었 으면 범위를 벗어나 결과를 얻은 후 연결이 닫힙니다.

잠재적 인 문제는 this question을 참조하십시오.

+0

이 함수가 포함 된 클래스는 dispose 메서드를 보유하거나 iDisposable 인터페이스를 구현할 필요가 없습니다. – user20358

+0

사용중인 데이터베이스 클래스가 IDisposable을 구현하는 경우, using 절을 사용하여 인스턴스화하는 것이 가장 좋습니다 :'(Database db = DatabaseFactory.CreateDatabase() {// code here}' – Oded