C# ADODB连接-错误:未找到数据源名称且未指定默认驱动程序

C# ADODB连接-错误:未找到数据源名称且未指定默认驱动程序,c#,ms-access,oledb,ado,C#,Ms Access,Oledb,Ado,在过去使用ODBC连接到Access DBs时,我从未遇到过问题。现在,我尝试使用ADO/OLEDB进行连接,但出现以下错误:无DSNless连接: System.Runtime.InteropServices.COMException:[Microsoft][ODBC驱动程序管理器]未找到数据源名称,也未指定默认驱动程序 我不再使用ODBC。正如我所说,我正在使用ADO/OLEDB。这是我的密码: var conString = "Provider=Microsoft.Jet.OLEDB.4.

在过去使用ODBC连接到Access DBs时,我从未遇到过问题。现在,我尝试使用ADO/OLEDB进行连接,但出现以下错误:无DSNless连接:

System.Runtime.InteropServices.COMException:[Microsoft][ODBC驱动程序管理器]未找到数据源名称,也未指定默认驱动程序

我不再使用ODBC。正如我所说,我正在使用ADO/OLEDB。这是我的密码:

var conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb";
// I've also tried the one below, same error
// var conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\test.mdb";
var con = new ADODB.Connection( conString );
// bombs here
con.Open();
我已经查看了谷歌和这个网站关于MS Access错误的所有信息。我尝试将我的项目改回32位x86。似乎什么都不管用

有人有什么想法吗

更新: 我需要ADODB连接,因为我使用的是需要ADODB连接的ADOX

var cat = new Catalog();
// this line below will bomb for ODBC or OLEDB
cat.ActiveConnection = con;

尝试建立OLEDB连接。还请提及输出

Imports System.Data.OleDb
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim connetionString As String
    Dim cnn As OleDbConnection
    connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabasename.mdb;"
    cnn = New OleDbConnection(connetionString)
    Try
        cnn.Open()
        MsgBox("Connection Open ! ")
        cnn.Close()
    Catch ex As Exception
        MsgBox("Can not open connection ! ")
    End Try
End Sub
End Class
您需要在建立连接时提供特定的驱动程序信息。请按照下一代码进行操作

Imports System.Data.Odbc
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim connetionString As String
    Dim cnn As OdbcConnection
    connetionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=yourdatabasename.mdb;"
    cnn = New OdbcConnection(connetionString)
    Try
        cnn.Open()
        MsgBox("Connection Open ! ")
        cnn.Close()
    Catch ex As Exception
        MsgBox("Can not open connection ! ")
    End Try
End Sub
End Class

您必须安装OLEDB驱动程序,以建立连接:

连接字符串:


我正在努力解决这个问题,我找到了一个奇怪的解决方案:

        // NOTE: this way doesn't work.  It throws an error:
        //  System.RuntimeInteropServices.COMException (0x80004005): [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified at ADODB.Connection.Open
        //_connection = new Connection(_connectionString);
        //_connection.Open();

        // This way *does* work.
        _connection = new Connection();
        _connection.Open(_connectionString, null, null, 0);

请为ADODB.ConnectionstringUh添加代码,我不懂。问题就在上面。您需要为机器安装OLEDB驱动程序。发件人:我已安装Office。他们没有安装Office?我在一些驱动程序版本不兼容的机器上发现这个问题,用于创建连接。我需要使用ADODB连接。查看我的更新。我可以使用OLEDB进行连接,但无法将该连接类型与ADOX一起使用。第二个代码与此相同。您需要在创建CONNECTIONSTRING时指定驱动程序,否则它将无法工作。您提供的代码用于OLEDB和ODBC。我需要一个ADODB连接。我无法将OLEDB或ODBC与ADOX对象一起使用。安装这些驱动程序后,我在ADOX.Catalog.Create conString命令上遇到此错误:发生了“System.Runtime.InteropServices.SehexException”类型的异常此新异常与OLEDB连接无关。请使用调试来签入项目GSS.BaseballIO。如果我返回并手动创建mdb文件,然后尝试与ADODB.Connection连接,则会得到未找到的原始错误数据源名称以及未指定的默认驱动程序。因此,现在我仍然无法使用ADODB进行连接,现在我甚至无法在运行时创建数据库。根据Microsoft的说明:SEHException类处理从非托管代码引发的SEH错误。我的所有代码都是托管的,COM中发生的情况除外。此外,直到我安装了你提到的驱动程序,我才发现这个错误。在安装驱动程序之前,我的代码至少在那一部分工作得很好。