2

次のコードは、Excelファイルを開いて読み取るためのものです.Excelファイルを削除して削除できるようにしたいです:

        Dim strNewPath As String = Server.MapPath("~/UploadedExcel/" & strFileName & strFileType)

        'Connection String to Excel Workbook
        If strFileType.Trim = ".xls" Then
            connString2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strNewPath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
        ElseIf strFileType.Trim = ".xlsx" Then
            connString2 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strNewPath & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
        End If
        query = "SELECT * FROM [Sheet1$]"

        'Create the connection object 
        conn2 = New OleDbConnection(connString2)
        'Open connection
        If conn2.State = ConnectionState.Closed Then conn2.Open()
        'Create the command object
        cmd = New OleDbCommand(query, conn2)
        da = New OleDbDataAdapter(cmd)
        ds = New DataSet()
        da.Fill(ds, "Staff")

        '    up.insertExcel(ds)

        da.Dispose()
4

3 に答える 3

3

Using-Statementを実装するすべてのものに使用する必要がありますIDisposable

Using conn2 = New OleDbConnection(connString2)
    conn2.Open()
    Using  cmd = New OleDbCommand(query, conn2)
        Using da = New OleDbDataAdapter(cmd)
            ds = New DataSet()
            da.Fill(ds, "Staff")
        End Using
    End Using
End Using

これにより、オブジェクトが確実に破棄されます (例外が発生した場合でも)。Disposeまた、暗黙的に接続を閉じます。

于 2012-09-26T07:38:28.143 に答える
0

電話に失敗しました:

conn2.Close();

(または同等のものconn2.Dispose()

ステートメントをラップしてUsing、例外がスローされた場合でも閉じられるようにする必要があります。

Using conn2 = New OleDbConnection(...)

    ...

End Using ' conn2 is automatically disposed / closed here
于 2012-09-26T07:22:49.730 に答える
0

CommandクラスとConnectionクラスもIDisposableインターフェイスを実装していることに注意してください。「using」ブロックまたはtry/finallyステートメントを使用する必要があります。finallyブロックでは、何らかの例外が発生した場合でも、オブジェクトを破棄する必要があります。

于 2012-09-26T07:21:35.803 に答える