2008-09-24 4 views
1

데이터를 읽은 후 OledbDataReader 개체를 닫을 수없는 것 같습니다. 관련 코드는 다음과 같습니다. -OledbDataReader를 VB.NET의 Sybase 데이터베이스에 닫을 수 없습니다.

Dim conSyBase As New OleDb.OleDbConnection("Provider=Sybase.ASEOLEDBProvider.2;Server Name=xx.xx.xx.xx;Server Port Address=5000;Initial Catalog=xxxxxxxxxx;User ID=xxxxxxxx;Password=xxxxxxxxx;") 

conSyBase.Open() 

Dim cmdSyBase As New OleDb.OleDbCommand("MySQLStatement", conSyBase) 
Dim drSyBase As OleDb.OleDbDataReader = cmdSyBase.ExecuteReader 

Try 

    While drSyBase.Read 
    /*Do some stuff with the data here */ 

    End While 

Catch ex As Exception 

    NotifyError(ex, "Read failed.") 

End Try 

drSyBase.Close() /* CODE HANGS HERE */ 
conSyBase.Close() 
drSyBase.Dispose() 
cmdSyBase.Dispose() 
conSyBase.Dispose() 

콘솔 응용 프로그램은 독자를 닫으려고 할 때 멈 춥니 다. 연결을 열고 닫는 것은 문제가 아니므로 누구에게이 문제의 원인이 될 수있는 아이디어가 있습니까?

답변

3

답변을 찾았습니다. 당신은 호출 할 필요가

drSyBase.Close() 

하여 Command 개체의 방법을 취소

전에

cmdSyBase.Cancel() 

나는이 그것은 내가 이후 오랜만

0

이것은 장거리이지만 시도의 마지막 블록에서 .Close() 및 .Dispose() 줄을 움직여보십시오. 좋아요 :


Dim conSyBase As New OleDb.OleDbConnection("Provider=Sybase.ASEOLEDBProvider.2;Server Name=xx.xx.xx.xx;Server Port Address=5000;Initial Catalog=xxxxxxxxxx;User ID=xxxxxxxx;Password=xxxxxxxxx;") 
conSyBase.Open() 
Dim cmdSyBase As New OleDb.OleDbCommand("MySQLStatement", conSyBase) 
Dim drSyBase As OleDb.OleDbDataReader = cmdSyBase.ExecuteReader 
Try 
    While drSyBase.Read 
    /*Do some stuff with the data here */ 
    End While 
Catch ex As Exception  
    NotifyError(ex, "Read failed.") 
Finally 
    drSyBase.Close() 
    conSyBase.Close() 
    drSyBase.Dispose() 
    cmdSyBase.Dispose() 
    conSyBase.Dispose() 
End Try 
+0

안녕 Mikey, 나는 마지막으로 블록을 배치하고 라인을 처리하려고 시도했지만 문제가 해결되지 않았습니다. –

0

Sybase 데이터베이스에 특정 될 수 있다고 생각 VB.NET을 사용했지만 C#에서 이것을 처리하는 가장 안전한 방법은 ""문을 사용하는 것입니다.

암시 적 try-catch과 같으며 "사용 중"이 종료되면 모든 리소스가 닫히거나 취소되고 폐기됩니다.

using (OleDb.OleDbConnection connection = new OleDb.OleDbConnection(connectionString)) 
{ 
    DoDataAccessStuff(); 
} // Your resource(s) are killed, disposed and all that 

업데이트는 : Using statement in VB.NET 2.0에 대한 링크 발견이 도움이되기를 바랍니다.

Using conSyBase As New OleDb.OleDbConnection("Provider=Sybase.ASEOLEDBProvider.2;Server Name=xx.xx.xx.xx;Server Port Address=5000;Initial Catalog=xxxxxxxxxx;User ID=xxxxxxxx;Password=xxxxxxxxx;"), _ 
    cmdSyBase As New OleDb.OleDbCommand("MySQLStatement", conSyBase) 

    conSyBase.Open() 
    Dim drSyBase As OleDb.OleDbDataReader = cmdSyBase.ExecuteReader 

    Try 
     While drSyBase.Read() 

      '...' 

     End While 
    Catch ex As Exception 
     NotifyError(ex, "Read failed.") 
    End Try 

    cmdSyBase.Cancel() 
End Using 
관련 문제