ошибка чтения при открытии файла excel в OracleBulkCopy

#.net #vb.net

Вопрос:

добрый день, друзья,

У меня есть некоторые проблемы , когда я использую OracleBulkCopy, проблема в том, что, когда файл уже открыт, я получаю ошибку в строке:

 bulkCopy.WriteToServer(dr)
 

указывающий:

1-нечисловой символ был найден там, где ожидалось число.

2-Была предпринята неверная попытка отката.

Самое забавное, что в сообщении не указана правильная причина, если я закрою файл, файл загрузится без ошибок.

Я искал в Google, как проверить, открыт ли excel, и закрыть его, или проверить, является ли часть BulkCopy.WriteToServer(dr), но я не нашел ничего, что работает.

кроме того, проверьте «аварийное восстановление», чтобы убедиться, что оно получено пустым или пустым, но имеет правильное количество записей.

Я буду признателен за любую помощь.

Приветствие.

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim _connString As String = "Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1.100.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORACLE))); User Id=USER; password=PASS;"
        Dim rutacarpeta As String
        Dim NombreArchivo As String
        Dim tablaBBDD As String
        'Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
        Using conn As OracleConnection = New OracleConnection(_connString)
            conn.Open()
            Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
            Try

                rutacarpeta = "C:2021"
                NombreArchivo = "FILE_0.xlsx"
                tablaBBDD = "FILE_TEST"
                Dim xlsxConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;';"
                xlsxConn = String.Format(xlsxConn, rutacarpeta   NombreArchivo).Trim()

                Using 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.tables(0)
                     row_file_excel=dr.rows.count

                    Using bulkCopy As OracleBulkCopy = New OracleBulkCopy(conn)
                        bulkCopy.BulkCopyTimeout = 90000
                        bulkCopy.DestinationTableName = tablaBBDD
                     

                   bulkCopy.WriteToServer(dr)

                        ot.Commit()

                        bulkCopy.Close()
                    End Using
                End Using

            Catch ex As Exception
                Try
                    ot.Rollback()
                Catch ex1 As Exception
                    MessageBox.Show(ex1.Message)
                End Try

                MessageBox.Show(ex.Message)

            End Try
        End Using
    End Sub
 

Комментарии:

1. При первой ошибке нет представления о причине. Было бы полезно, если бы вы могли определить, где происходит ошибка. Что касается второй ошибки, то это просто то, что происходит с любым исключением, происходит до того, как вы инициировали транзакцию БД. Короче говоря, ваша обработка ошибок-это небольшой беспорядок, который сделает вашу отладку сложнее, чем это необходимо