【问题标题】:DAO connecting to a database in c#C# 中的 DAO 连接到数据库
【发布时间】:2019-01-26 09:53:27
【问题描述】:

我无法连接到我的数据库,我只收到 DAOWorkSpace 未分配的编译器错误... 更大的问题是我在 C# 中找不到 DAO 的任何文档。

是的,我必须使用 DAO。

我的代码:

DAO.Database DAODataBase;
DAO.DBEngine DAODBEngine = new DAO.DBEngineClass();
DAO.Recordset DAOFoundCode;
DAO.Workspace DAOWorkSpace;

DAODataBase = DAOWorkSpace.OpenDatabase(mdbFile, null, null, ";pwd=");

我尝试设置不同的参数,但我不断收到相同的错误。

我的想法用完了。 感谢您的帮助,因为我被困在这里。

【问题讨论】:

  • 如果你认为你必须使用 DAO(它在 C# 发布前几年就已经过时了),我强烈建议你更可能严重误解某些东西。您能否对您为什么“必须”使用 DAO 的问题添加一些解释?
  • @Damien_The_Unbeliever 关于 DAO 已过时的说法是一种常见的误解(尽管有几个 Microsoft 支持页面确实说明了这一点)。虽然 JET DAO 确实老了,不再更新,而且微软打算在 Access 2003 中迁移到 ADO,但微软转而使用自 Access 2007 以来随 Access Database Engine 一起提供的 ACEDAO,并且仍在积极开发中。对于连接到 Access 数据库,有时这是一个合乎逻辑的选择,主要是如果您想修改设计。对于任何其他数据库,它都不是。

标签: c# database ms-access dao


【解决方案1】:

你需要先分配工作空间:

DAOWorkSpace = DAODBEngine.Workspaces[0]; //Default workspace

另外,不要将OpenDatabase 中的属性设置为Null

DAODataBase = DAOWorkSpace.OpenDatabase(mdbFile, False, True, ";pwd="); //Shared mode, read-only

【讨论】:

  • 感谢您的快速答复!还有一个错误:不可调用的成员 '_DBEngine.Workspaces' 不能像方法一样使用。
  • @m4gn1f1c4nt 抱歉,我的 C# 充其量只是生锈了。尝试当前编辑
  • 非常感谢!在这里,我们遇到一个新错误 (System.Runtime.InteropServices.COMException: 'Unrecognized database format 'C:\Users) 消息,我可以真正感受到我有多爱 DAO
  • 这很奇怪。我只在损坏/不存在的数据库上使用过,或者在尝试使用 Jet 打开 .accdb 文件时使用过。它是 mdb 还是 accdb?您确定它是有效的(您可以在 Access 中打开它)吗?
  • 这是可能的。您可以尝试打印DBEngine.Version。对于 MDB 文件,ACEDAO (ACEDAO.dll) 和 DAO 3.6 (dao360.dll) 都应该这样做。我更喜欢使用 ACEDAO,但某些版本的 DAO 随 Windows 一起提供,不需要安装 Access 数据库引擎。
【解决方案2】:

答案:

        private string InsertDescription( string mdbFile )
    {
        string log = null;
        DAO.Database db;
        DAO.DBEngine dbEn = new DAO.DBEngine();
        DAO.Recordset rs;

        string value = "Bi pe di Ba pe di Buuuuuuuuuuuuuuuuuuuuuuu!!!!";
        string tabelName = "AC_Tab";
        string columnName = "dbac3_ac_version_db";

        try
        {
            db = dbEn.OpenDatabase(mdbFile, null, false, null);
            rs = db.OpenTable(tabelName, 0);
            rs.AddNew();

            db.TableDefs[tabelName].Fields[columnName].Properties["Description"].Value = value;
            rs.Update(1, false);
            rs.Close();

            log = "- Der Descriptionimport in die Datenbank war erfolgreich!";
        }

        catch( Exception ex )
        {
            log = "- Der Descriptionimport in die Datenbank war Nicht erfolgreich!" + Environment.NewLine + ex.Message;
        }

        return log;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2017-10-26
    • 2015-09-01
    相关资源
    最近更新 更多