有OleDbConnection的问题

时间:2015-06-23 14:55:28

标签: vb.net ms-access oledbconnection

我正在开发一个程序,它将访问一个访问数据库,清除我指定的所有4个表的记录,然后在数据库中创建一个包含Excel中所有数据的新表“目录”文件。我在使用OleDbConnection方面遇到了麻烦。它在包含conn.Open()的行中出现错误,错误为“无效参数”

我的代码如下:

Private Sub btnAccess_Click(sender As System.Object, e As System.EventArgs) Handles btnAccess.Click
    Dim AccessPath As String = ""
    Dim com1 As OleDbCommand
    Dim com2 As OleDbCommand
    Dim com3 As OleDbCommand
    Dim com4 As OleDbCommand
    Dim DatabaseFile As String = ""
    Dim DatabaseFileTitle As String = ""
    Dim ExcelFile As String = ""
    Dim ExcelFileTitle As String = ""
    Dim connect As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile & _
";Extended Properties=Excel 12.0;"

    OpenFileDialog2.DefaultExt = "*.accdb"
    MsgBox("Select the ACCESS FILE from the working directory.", , "BROWSE FOR THE ACCESS DATABASE")

    OpenFileDialog2.InitialDirectory = Microsoft.VisualBasic.FileIO.FileSystem.CurrentDirectory
    'Text (*.txt)|*.txt|Pictures (*.bmp;*.ico)|*.bmp;*.ico
    OpenFileDialog2.Filter = "Access Database (*.accdb)|*.accdb"
    OpenFileDialog2.Title = "Select ACCESS DATABASE File."
    OpenFileDialog2.ShowDialog()
    DatabaseFile = OpenFileDialog2.FileName
    DatabaseFileTitle = System.IO.Path.GetFileNameWithoutExtension(OpenFileDialog2.FileName)

    OpenFileDialog3.DefaultExt = "*.xlsx"
    MsgBox("Select the EXCEL TOC FILE from the working directory.", , "BROWSE FOR THE EXCEL TOC")

    OpenFileDialog3.InitialDirectory = Microsoft.VisualBasic.FileIO.FileSystem.CurrentDirectory
    'Text (*.txt)|*.txt|Pictures (*.bmp;*.ico)|*.bmp;*.ico
    OpenFileDialog3.Filter = "Excel Spreadhseet (*.xlsx)|*.xlsx"
    OpenFileDialog3.Title = "Select EXCEL TOC File."
    OpenFileDialog3.ShowDialog()
    ExcelFile = OpenFileDialog3.FileName
    ExcelFileTitle = System.IO.Path.GetFileNameWithoutExtension(OpenFileDialog3.FileName)

    Using conn As New OleDbConnection(connect)
        Using cmd As New OleDbCommand()
            cmd.Connection = conn
            cmd.CommandText = "SELECT * INTO [MS Access;Database=" & DatabaseFile & "].[New Table] FROM [Sheet1$]"
            conn.Open()
            cmd.ExecuteNonQuery()
            com1 = New OleDbCommand("delete from tblArtId", conn)
            com2 = New OleDbCommand("delete from tblFigure", conn)
            com3 = New OleDbCommand("delete from tblSubGroups", conn)
            com4 = New OleDbCommand("delete from tblGroups", conn)
            com1.ExecuteNonQuery()
            com2.ExecuteNonQuery()
            com3.ExecuteNonQuery()
            com4.ExecuteNonQuery()
                conn.Close()

        End Using
       End Using
   MsgBox("Records Deleted")
End Sub

1 个答案:

答案 0 :(得分:0)

如果有人好奇......我的更新代码如下:

    Private Sub btnAccess_Click(sender As System.Object, e As System.EventArgs) Handles btnAccess.Click
    Dim AccessPath As String = ""
    Dim com1 As OleDbCommand
    Dim com2 As OleDbCommand
    Dim com3 As OleDbCommand
    Dim com4 As OleDbCommand
    Dim DatabaseFile As String = ""
    Dim DatabaseFileTitle As String = ""
    Dim ExcelFile As String = ""
    Dim ExcelFileTitle As String = ""


    OpenFileDialog2.DefaultExt = "*.accdb"
    MsgBox("Select the ACCESS FILE from the working directory.", , "BROWSE FOR THE ACCESS DATABASE")

    OpenFileDialog2.InitialDirectory = Microsoft.VisualBasic.FileIO.FileSystem.CurrentDirectory
    'Text (*.txt)|*.txt|Pictures (*.bmp;*.ico)|*.bmp;*.ico
    OpenFileDialog2.Filter = "Access Database (*.accdb)|*.accdb"
    OpenFileDialog2.Title = "Select ACCESS DATABASE File."
    OpenFileDialog2.ShowDialog()
    DatabaseFile = OpenFileDialog2.FileName
    DatabaseFileTitle = System.IO.Path.GetFileNameWithoutExtension(OpenFileDialog2.FileName)

    OpenFileDialog3.DefaultExt = "*.xlsx"
    MsgBox("Select the EXCEL TOC FILE from the working directory.", , "BROWSE FOR THE EXCEL TOC")

    OpenFileDialog3.InitialDirectory = Microsoft.VisualBasic.FileIO.FileSystem.CurrentDirectory
    'Text (*.txt)|*.txt|Pictures (*.bmp;*.ico)|*.bmp;*.ico
    OpenFileDialog3.Filter = "Excel Spreadhseet (*.xlsx)|*.xlsx"
    OpenFileDialog3.Title = "Select EXCEL TOC File."
    OpenFileDialog3.ShowDialog()
    ExcelFile = OpenFileDialog3.FileName
    ExcelFileTitle = System.IO.Path.GetFileNameWithoutExtension(OpenFileDialog3.FileName)

    Dim connectExcel As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile & _
";Extended Properties=Excel 12.0;"

    Dim connectAccess As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DatabaseFile & ";"

    Using connExcel As New OleDbConnection(connectExcel)
        Using cmd As New OleDbCommand()
            cmd.Connection = connExcel
            cmd.CommandText = "SELECT * INTO [MS Access;Database=" & DatabaseFile & "].[New Table] FROM [TOC Output for Excel$]"
            connExcel.Open()
            cmd.ExecuteNonQuery()
            connExcel.Close()
        End Using
    End Using

    Using connAccess As New OleDbConnection(connectAccess)
        Using cmdAccess As New OleDbCommand()
            com1 = New OleDbCommand("delete from tblArtId", connAccess)
            com2 = New OleDbCommand("delete from tblFigure", connAccess)
            com3 = New OleDbCommand("delete from tblSubGroups", connAccess)
            com4 = New OleDbCommand("delete from tblGroups", connAccess)
            connAccess.Open()
            com1.ExecuteNonQuery()
            com2.ExecuteNonQuery()
            com3.ExecuteNonQuery()
            com4.ExecuteNonQuery()
            connAccess.Close()
        End Using
    End Using




    MsgBox("Staging Table has been created. All Records Deleted from Group, SubGroup, Figure, and ArtID tables")
End Sub