晚上好,朋友們,
我正在上傳檔案。
我正在上傳一個檔案 我正在用BackgroundWorker1在后臺作業,但我很難計算執行時間或執行oraclebulkcopy的時間,以便能夠回圈和更新計數器并將其傳遞給進度條。
我正在嘗試使用:
for i: 0 to row_file_excel
BackgroundWorker1.reportprogress (i)
接下來
但它沒有回傳所需的結果,我必須用加載oraclebulkcopy的時間來替換row_file_excel,但我不知道如何找到作業時間。
如果無法獲得時間,我還能做什么?
我將感謝任何幫助。
我將感謝任何幫助
。非常感謝你,
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase. 加載
Dim _connString As String = "Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10. 10.100.1)(埠=1521))(CONNECT_DATA =(SERVICE_NAME = ORACLE)); User Id=USER; password=PASS;"
Dim rutacarpeta As String
Dim NombreArchivoAs String
Dim tablaBBDD As String
'Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
使用 conn As OracleConnection = New OracleConnection(_connString)。
conn.Open()
Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
Try
rutacarpeta = "C:2021"。
NombreArchivo = "FILE_0.xlsx"/span>
tablaBBDD = "FILE_TEST"/span>
Dim xlsxConn As String = "Provider=Microsoft.ACE.OLEDB.12 .0;資料源={0};擴展屬性='Excel 12.0 Xml;HDR=Yes;IMEX=1;';"/span>
xlsxConn = String.Format(xlsxConn, rutacarpeta NombreArchivo).Trim()
使用 excel_con As OleDbConnection = New OleDbConnection(xlsxConn)。
excel_con.Open()
'Dim hoja As String = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing).Rows(0)()
Dim command As OleDbDataAdapter = New OleDbDataAdapter ("SELECT * FROM [FILE$]", excel_con)
Dim dtset As new dataset
command.fill(dtset)
dim dr as datatable =dtset.table(0)
row_file_excel=dr.rows.count
使用 bulkCopy As OracleBulkCopy = New OracleBulkCopy(conn)。
bulkCopy.BulkCopyTimeout = 90000
bulkCopy.DestinationTableName = tablaBBDD
for i: 0 to row_file_excel '***這里我想計算加載的執行時間( bulkCopy.WriteToServer(dr)) ******
BackgroundWorker1.reportprogress(i)
next
bulkCopy.WriteToServer(dr)
ot.Commit()
bulkCopy.Close()
結束 使用
結束 使用
Catch ex As Exception
嘗試 嘗試 ot.Rollback()
ot.Rollback()
Catch ex1 As Exception
MessageBox.Show(ex1.Message)
End Try
MessageBox.Show(ex.Message)
結束 試
End Using
結束 sub
uj5u.com熱心網友回復:
我從來沒有使用過OracleBulkCopy,所以我不打算嘗試寫一個詳細的代碼例子。我只是閱讀了相關的檔案,所以我可以在此基礎上指出我認為你應該做什么。
當您檢索資料時,您可以獲得要匯入的記錄總數,并將其分配給您的ProgressBar的Maximum屬性。您可以設定NotifyAfter屬性并處理您的OracleBulkCopy物件的RowsCopied事件,以便在每次復制了許多行時得到通知。你指定的數字越小,事件就會被提出來,你的進度就會越精細,但你就會拖慢整個程序。你將通過在每個事件中復制的行數來增加你的ProgressBar的值。
我不確定事件處理程式的e引數將為您提供什么。如果它提供了到目前為止復制的行數,那么你可以直接將其分配給Value屬性。如果它沒有提供一個計數,那么你可以直接將NotifyAfter的值添加到Value屬性中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/317231.html
標籤:
