如何使用C#连接到MS Access文件(mdb)?

时间:2012-04-29 18:34:31

标签: c# ms-access oledb

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

如何在没有Microsoft.OLEDB.JET.4.0的情况下连接到该文件,还是有其他选择?

我有以下提供者:

Available Ole DB providers

我尝试使用OLE DB Provider for Microsoft Directory Services,在测试连接的同时,我得到'测试成功但提供商不接受某些设置'。我拿了那根弦然后用它了,我得到了ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14)

6 个答案:

答案 0 :(得分:22)

最简单的连接方式是使用类似

的代码通过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=;

请参阅ConnectionStrings

另外,您可以创建DSN,然后在连接字符串中使用该DSN

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

现在你的connectionString可以用这种方式编写

myConnectionString = "DSN=myDSN;"

答案 1 :(得分:4)

以下是如何使用Jet OLEDB或Ace OLEDB Access DB:

new OpenLayers.Layer.Google("Google Roadmap", {
    streetViewControl: true
})

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

您使用的Access文件扩展名是什么? Jet OLEDB或Ace OLEDB。 如果您的Access数据库是.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;
        }
    }
}

答案 4 :(得分:0)

试试这个..

using System.Data.OleDb;

OleDbConnection dbConn;

dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;");

答案 5 :(得分:0)

另一种最简单的连接方式是通过 OdbcConnection 使用 App.config 这样的文件

  <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>

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

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

SELECT 
TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'.'),'yyyy-MM-ddThh:mm:ss') AS DATE,
recipient-address as Receiver,
sender-address as Sender
FROM '[LOGFILEPATH]'
WHERE (sender-address='mrsmith@conoso.com' OR recipient-address='mrsmith@conoso.com') AND Date > TO_TIMESTAMP('2017-01-22 22:18:00', 'yyyy-MM-dd hh:mm:ss')
GROUP BY Receiver, Date, Sender