Закрытие соединения OLE DB, открытого из функции

Подпираюсь в углу....

Использовал фрагмент кода, который я нашел в Интернете, и не могу понять, как закрыть это соединение. Возвращенная OleDbcommand objCommand остается открытой после обработки. Мне нужно закрыть его, чтобы я мог удалить файл после того, как извлек из него данные. (Не хочу, чтобы они болтались на сервере.)

Это должно быть проще, чем 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

Я пытался...

  ExcelConnection.connection.close()

наряду с приблизительно 40 другими попытками воссоздать Команду и затем закрыть его.

Мог бы действительно использовать некоторую помощь по этому вопросу.

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

Я разместил что-то похожее на это здесь... Лучший быстрый способ прочитать лист Excel

Другие вопросы по тегам