16

我正在尝试连接到 mdb 文件,并且我知道我需要Microsoft.OLEDB.JET.4.0数据提供程序。不幸的是,我没有在(大学)机器上安装它。由于他们不提供该提供商,我相信应该有办法解决。

如何在没有Microsoft.OLEDB.JET.4.0或有任何替代方法的情况下连接到文件?

我有以下提供者:

可用的 Ole DB 提供程序

我尝试使用OLE DB Provider for Microsoft Directory Services,在测试连接时,我得到“测试成功,但提供者不接受某些设置”。无论如何,我拿了那个字符串并使用它,我得到了ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

4

6 回答 6

28

最简单的连接方式是使用像这样的代码通过 OdbcConnection

using System.Data.Odbc;

using(OdbcConnection myConnection = new OdbcConnection())
{
    myConnection.ConnectionString = myConnectionString;
    myConnection.Open();

    //execute queries, etc

}

myConnectionString 是这样的

myConnectionString = @"Driver={Microsoft Access Driver (*.mdb)};" + 
"Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;

请参阅连接字符串

或者,您可以创建一个 DSN,然后在连接字符串中使用该 DSN

  • 打开控制面板 - 管理工具 - ODBC 数据源管理器
  • 转到系统 DSN 页面并添加新的 DSN
  • 选择 Microsoft Access 驱动程序 (*.mdb) 并按 END
  • 设置 DSN 的名称(在此示例中选择 MyDSN)
  • 选择要使用的数据库
  • 尝试使用 Compact 或 Recover 命令查看连接是否正常

现在你的 connectionString 可以这样写

myConnectionString = "DSN=myDSN;"
于 2012-04-29T19:25:44.490 回答
10

以下是使用 Jet OLEDB 或 Ace OLEDB Access DB 的方法:

using System.Data;
using System.Data.OleDb;

string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source=C:\myPath\myFile.mdb;" +                                    
                           "Persist Security Info=True;" +
                           "Jet OLEDB:Database Password=myPassword;";
try
{
    // Open OleDb Connection
    OleDbConnection myConnection = new OleDbConnection();
    myConnection.ConnectionString = myConnectionString;
    myConnection.Open();

    // Execute Queries
    OleDbCommand cmd = myConnection.CreateCommand();
    cmd.CommandText = "SELECT * FROM `myTable`";
    OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // close conn after complete

    // Load the result into a DataTable
    DataTable myDataTable = new DataTable();
    myDataTable.Load(reader);
}
catch (Exception ex)
{
    Console.WriteLine("OLEDB Connection FAILED: " + ex.Message);
}
于 2015-04-23T19:56:28.283 回答
3

您应该使用“Microsoft OLE DB Provider for ODBC Drivers”来访问 Microsoft Access。这是使用它的示例教程

http://msdn.microsoft.com/en-us/library/aa288452(v=vs.71).aspx

于 2012-04-29T18:44:11.983 回答
3

什么访问文件扩展名或您使用?Jet OLEDB 或 Ace OLEDB。如果您的 Access DB 是 .mdb(又名 Jet Oledb)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Oledb

namespace MembershipInformationSystem.Helpers
{
    public class dbs
    {
        private String connectionString;
        private String OleDBProvider = "Microsoft.JET.OLEDB.4.0"; \\if ACE Microsoft.ACE.OLEDB.12.0
        private String OleDBDataSource = "C:\\yourdb.mdb";
        private String OleDBPassword = "infosys";
        private String PersistSecurityInfo = "False";

        public dbs()
        {

        }

        public dbs(String connectionString)
        {
            this.connectionString = connectionString;
        }

        public String konek()
        {
            connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + "";
            return connectionString;
        }
    }
}
于 2013-08-29T10:20:38.323 回答
0

试试这个..

using System.Data.OleDb;

OleDbConnection dbConn;

dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;");
于 2012-04-29T19:25:16.487 回答
0

另一种最简单的连接方式是通过OdbcConnection使用App.config文件,如下所示

  <appSettings>  
    <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True"/>
  </appSettings>

MyDB.mdb 是我的数据库文件,它与主 exe 文件一起存在于当前主应用程序文件夹中。

如果您的 mdf 文件有密码,则像这样使用

  <appSettings>
    <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Admin$@123"/>
  </appSettings>
于 2017-06-28T16:45:08.983 回答