2013-01-15 6 views
0

는 구석에 자신을 바탕으로 함수 내에서 연하여 OLE DB 연결을 닫기. 반환 된 OleDbcommand objCommand는 처리 후 열려 있습니다. 파일을 닫은 후에 파일을 삭제할 수 있도록 파일을 닫아야합니다. (서버에 매달려있는 것을 원하지 마십시오.)는 <p></p> 내가 웹에서 발견 코드 조각을 사용하고이 연결을 종료하는 방법을 알아낼 수 없습니다 ....

이 작업은이 작업을 시도한 100 줄의 코드보다 쉽습니다. 이 함수는 연결을 엽니 다.

Protected Function ExcelConnection() As OleDbCommand 
    Dim fileName As String = Session("newUploadedFile") 

    ' Connect to the Excel Spreadsheet 
    Dim xConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=" & Server.MapPath(String.Format("~/Upload/{0}", fileName)) & ";" & _ 
      "Extended Properties=Excel 8.0;" 

    ' create your excel connection object using the connection string 
    Dim objXConn As New OleDbConnection(xConnStr) 
    objXConn.Open() 
    ' use a SQL Select command to retrieve the data from the Excel Spreadsheet 
    ' the "table name" is the name of the worksheet within the spreadsheet 
    ' in this case, the worksheet name is "Sheet1" and is expressed as: [Sheet1$] 

    Dim objCommand As New OleDbCommand("SELECT Name FROM [Sheet1$]", objXConn) 

    Return objCommand 
End Function 

내가 시도 ... 명령을 다시하고 닫습니다 약 40 다른 시도와 함께

ExcelConnection.connection.close() 

.

정말이 도움말을 사용할 수 있습니다.

+0

왜 명령 개체를 반환해야합니까? 'IDisposable' (연결 또는 명령과 같이)을 구현하고 명령을 반환하지 않고 원하는 데이터 ('DataTable' 또는'List (Of CustomClass) ')를 구현하는 모든 객체에'Using' 문을 사용하십시오. . –

+0

여러 위치에서 호출되었습니다. 스프레드 시트 파일을 삭제하기 위해 코딩을 시작했을 때만 문제가되었습니다. 완벽한 예를 들자면, 웹 예제가 그렇게하지 않은 이유를 알지 못한다. – htm11h

답변

1

이것은 아마도 최선의 방법은 아니지만 실제로 이렇게해야하는 경우 호출 루틴에서 연결을 정의하고이 루틴을 매개 변수로 전달하는 것을 고려하십시오. 그 다음 ...

Sub Main() 

    Dim xConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=" & Server.MapPath(String.Format("~/Upload/{0}", fileName)) & ";" & _ 
     "Extended Properties=Excel 8.0;" 

    Dim objXConn As New OleDbConnection(xConnStr) 
    objXConn.Open() 
    Dim ObjCommand As New OleDbCommand = ExcelConnection(objXConn) 

    'Whatever other operations you want to do with your returned OleDbCommand 
    ... 

    objXConn.Close() 

End Sub 

Function ExcelConnection(PassedConnection As OleDbConnection) As OleDbCommand 
    Dim fileName As String = Session("newUploadedFile") 
    Dim objCommand As New OleDbCommand("SELECT Name FROM [Sheet1$]", PassedConnection) 
    Return objCommand 
End Function 

내가 여기이 비슷한을 게시 ... 따라서, 호출 라우팅 폐쇄 할 수 Best fastest way to read an Excel sheet