错误:不是有效的文件名(OleDbException)

时间:2014-08-04 08:33:35

标签: exception-handling ado.net visual-studio-2013 oledbexception

我有一个简单的Access数据库,其中包含一个表。就这个 Screenshot

对于我的Button Load事件,我有这段代码

    Dim con As New OleDb.OleDbConnection
    Dim dbProvider As String
    Dim dbSource As String

    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
    dbSource = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪E:\addressBook\AddressBook.mdb"

    con.ConnectionString = dbProvider & dbSource

    con.Open()
    MsgBox("Opened")
    con.Close()

在con.Open()行上我得到了这个异常。我无法理解这是什么问题。也许名称“con”是问题,但我将其更改为“c”或“con1”,但同样的异常发生。无法理解的原因。感谢任何解决方案

Screenshot 2

3 个答案:

答案 0 :(得分:0)

我不认为此处需要提供商,因为您已经在源代码中进行了更改...

dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪E:\addressBook\AddressBook.mdb"

con.ConnectionString = dbProvider & dbSource

为...

dbSource = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪E:\addressBook\AddressBook.mdb"

con.ConnectionString = dbSource

看看ConnectionStrings

更好的解决方案是将文件添加到App_Data文件夹,而不是从本地驱动器引用该文件。将连接字符串添加到配置...

<connectionStrings>
    <add name="AccessConnection"
        connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|dbName"
        providerName="System.Data.OleDb" />
</connectionStrings>

答案 1 :(得分:0)

@放在连接字符串之前。它对我有用!

答案 2 :(得分:-1)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    Dim dbprovider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Documents\k1.accdb"
    conn.ConnectionString = dbprovider
    conn.Open()