2013-10-24 3 views
0

Я загружаю лист excel и хочу переместить его данные в другую таблицу в базе данных. Последние два дня я получал сообщение об ошибке (System.Data.OleDb.OleDbException invalid argument), однако, если я разрабатываю очень простое приложение, он отлично работает. Пожалуйста, помогите мнеSystem.Data.OleDb.OleDbException Недопустимый аргумент

 
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("TERAMSConnectionString").ConnectionString) 
      Dim path As String = FileUpload1.PostedFile.FileName 
      Dim excelConnectionString As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + (path + ";Extended Properties=Excel 12.0;Persist Security Info=False")) 
      Dim excelConnection As OleDbConnection = New OleDbConnection(excelConnectionString) 
      conn.Open() 
      excelConnection.Open() 
      Dim cmd As OleDbCommand = New OleDbCommand("Select * from [Sheet1$]", excelConnection) 
      'Clears any previous data 
      Dim sClearSQL = "DELETE FROM Desktop_Compare " 
      Dim SqlCmd As SqlCommand = New SqlCommand(sClearSQL, conn) 
      SqlCmd.ExecuteNonQuery() 
      Dim dReader As OleDbDataReader = cmd.ExecuteReader 
      Dim sqlBulk As SqlBulkCopy = New SqlBulkCopy(conn) 
      excelConnection.Close() 
      conn.Close() 
     End Using 


Line 74:    Dim excelConnection As OleDbConnection = New OleDbConnection(excelConnectionString) 
Line 75:    conn.Open() 
Line 76:    **excelConnection.Open()** 
Line 77:    Dim cmd As OleDbCommand = New OleDbCommand("Select * from [Sheet1$]", excelConnection) 
Line 78:    'Clears any previous data 
+0

В какой момент вы получаете исключение? В качестве побочного примечания я бы рекомендовал использовать '&' для объединения строк вместо '+' (я видел, что + вызывает некоторые странные проблемы, поскольку он пытается «добавить» строки вместе, а не присоединяться к ним) – Grahamvs

+0

@Grahamvs Ok , Я получаю сообщение об ошибке «excelConnection.Open()», который указывает, что код пользователя не обрабатывается. – Miank

ответ

0

Попробуйте изменить строку подключения:

Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";" 

Если это не сработает, попробуйте изменить/добавления Extended Properties и Persist Security Info один в то время, как он появляется либо вы проблема с драйвером ACE или один из дополнительных аргументов вызывает проблему

Что касается ваших пользователей, получающих необработанную ошибку, вы можете попробовать что-то вроде этого:

 Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";" 

     Using excelConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection(excelConnectionString) 
      Try 
       excelConnection.Open() 

       Using cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand("Select * from [Sheet1$]", excelConnection) 

        'Clears any previous data 
        Dim sClearSQL As String = "DELETE FROM Desktop_Compare " 
        Using SqlCmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(sClearSQL, conn) 
         SqlCmd.ExecuteNonQuery() 
        End Using 

        Dim dReader As OleDb.OleDbDataReader = cmd.ExecuteReader 
        Dim sqlBulk As SqlClient.SqlBulkCopy = New SqlClient.SqlBulkCopy(conn) 
        excelConnection.Close() 

       End Using 

      Catch ex As Exception 
       ' Handle errors here 

      Finally 
       If Not excelConnection.State = ConnectionState.Closed Then 
        Try 
         excelConnection.Close() 
        Catch ex As Exception 
        End Try 
       End If 

      End Try 

     End Using 
Смежные вопросы