繁体   English   中英

OleDbConnection遇到问题

[英]Having trouble with OleDbConnection

我正在开发一个程序,该程序将访问Access数据库,清除我指定的所有4个表的记录,然后在数据库中创建一个包含来自我的Excel的所有数据的新表。目录”文件。 我在OleDbConnection方面遇到了麻烦。 它不断在包含conn.Open()的行中出错,并显示错误“ Invalid Argument”。

我的代码如下:

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

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

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM