问题标签 [adox]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ADO.NET 创建链接表的方式
我正在编写一个使用 ADO.NET OLEDB 提供程序的应用程序。数据库是Access。大多数数据库交互是通过 DDL/DML SQL 查询。
我现在需要创建链接表,而仅使用 ADO.NET 似乎没有办法做到这一点。既不是简单的 DDL 查询,也不是试图直接操作 Access 系统表。
我试图避免使用 ADOX,在我的应用程序中有额外的引用/依赖。有谁知道解决这个问题的方法?非常感激。
这是我目前使用 ADOX 创建链接表的方式。
.net - 是否有一个.NET 库可以完成 ADOX 所做的工作,即跨数据库 DDL 库?
我正在编写一个跨数据库应用程序。在命令和连接方面,它可以与 ADO.NET 基类和 oledb 提供程序完美配合。
现在我需要编写一些代码来创建表、索引、删除它们、查询表列表等,我不期待有十几个版本的 MySql、MsSql、MsAccess、SQLite 等代码。
我怎样才能做到这一点?有没有像 ADOX 那样有帮助的库?
ms-access - 如何以编程方式从 Access 2010 数据库引擎创建与 Access 2007 兼容的加密数据库?
我想升级我的应用程序以使用更新的 Access 2007/2010 数据库引擎。它目前将其数据存储在 Jet 4.0 (MDB) 数据库中。我的应用程序是用 Delphi 编写的,它使用 ADODB(ADO 经典)与数据库进行交互。我想从 Jet 4.0 升级数据库引擎,以便提供更好的加密选项。
我将应用程序中的连接字符串更改为使用 Microsoft.ACE.OLEDB.12.0,尽管出现了一些小问题,但转换过程非常顺利!令人印象深刻的向后兼容性。
我还将我的应用程序以 Wine 包的形式分发给 Mac 用户。在 Wine (1.4-rc1) 上的 Access 2010 数据库引擎下运行我的应用程序时遇到了一些问题。出现奇怪的访问冲突。当我在 Wine 上安装 Access 2007 数据库引擎时,我的应用程序运行良好。与 Jet 4.0 一样好。因此,Access 2010 数据库引擎似乎还没有为 Wine 做好准备。无赖!
我遇到的问题是,如果您在 Windows 机器上安装了 Access 2010 数据库引擎(例如在安装 Access 2010 时),当它创建一个新数据库时,它会使用与Access 2007。我的应用程序的用户无法在他们的 PC 和 Mac 之间共享他们的数据库(即通过 Dropbox),因为它们不再兼容。
在 Access 2010 中,您可以将其设置为“使用旧版加密”选项。此选项导致 Access 2010 使用与 Access 2007 兼容的加密创建新数据库。此选项设置注册表项“CompatMode”,并且在这种情况下,Access 2010 应用程序必须采用不同的方法来创建新数据库。
我的问题是:如何以编程方式从 Access 2010 数据库引擎创建与 Access 2007 兼容的加密数据库?如果 Access 2010 应用程序可以做到,我该怎么做?我知道创建 Access 数据库的两种技术:1. 通过 DAO (DBEngine.CreateDatabase),2. 通过 ADOX (Catalog.Create)。我一直在尝试使用这两种技术的各种方法,但想不出任何方法来创建与 Access 2007 兼容的加密数据库。
c# - 无法使用 ADOX 创建 Access 数据库
我对 ADOX Interop 有一个非常奇怪的问题。
我有这个代码:
代码在 cat.Create() 行中失败。真正奇怪的是,在我的本地开发人员机器上它工作正常,但在生产服务器中却没有......这不是写权限问题,因为我试图在问题行之前生成一个随机文件并且工作完美。COMException 消息只是“未指定错误”HResult:-2147467259
服务器操作系统是 Windows 2008 32 位。我认为是服务器配置问题,但你能给我一些启示吗?我不知道我还能做什么...
c# - 当我尝试在 C# 中创建 .accdb 文件时出错
这是我的代码,如果找不到,它会创建一个 .accdb 文件:
但是当我在程序中运行它时,我得到了这个运行时错误:
我不知道文件名有什么问题,所以如果有人有任何想法,请帮忙。
c# - 无法将 ADOX.Catalog.ActiveConnection 设置为来自 .NET 的 ADODB 连接
我的任务是将遗留的 VB6 应用程序(使用 MS Access 作为数据库,不要问)增量移植到 .NET。
这将是一个很长的文章,但我认为最好提供一些背景信息。
此应用程序有一个带有菜单的主 MDI 表单,该菜单是根据应用程序文件夹中的 DLL 动态创建的。它本质上是一种插件:每个 DLL 都由一个菜单项表示,当单击该菜单项时,将打开 DLL 中包含的主窗体,并SetParent()
根据需要进行调用。
MDI 表格是我的起点。我想重写足够多的内容(当然,我要进行重新设计和单元测试)以便能够打开所述表单。一旦我确定了那个,我将开始一次重写一个 DLL。
每个 DLL 都需要一个 ADO 连接,我已经能够从 C# 传递它。
问题是,其中一个插件(至少,但可能还有许多其他插件)使用 ADOX 在数据库上做事,问题就在这里:当我尝试将 ADOX.Catalog 的 ActiveConnection 属性设置为 ADO 连接时,所有我得到的是运行时错误 3001:Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
我一生都无法弄清楚我做错了什么。
VB6 代码尽可能简单:
创建 ADO 连接的 C# 代码与 VB 代码一样简单:
并且调用Open()
成功。如果我尝试ActiveConnection
在 C# 端设置 ,如下所示:
一切正常。
现在,我可以通过简单地在 C# 端实例化 ADOX 并将其传递给 VB6 来解决这个问题,但是调整 VB6 代码(当然没有单个单元测试)可以证明是一个 PITA,我不是甚至确保一开始这很容易(因为该应用程序可以一次使用多个 Access DB,并根据需要打开和关闭与每个数据库的连接)。
那么,有人知道我做错了什么吗?在 C# 中,我尝试从 .NET 选项卡和 COM 选项卡中引用 ADODB(我从 COM 选项卡中选择的 ADO 版本是正确的:2.5...再次,不要问),但仍然没有喜悦。
编辑
当我尝试将 RecordSet 的 ActiveConnection 属性分配给来自 C# 的连接时,会发生完全相同的事情,如下所示:
由于 ActiveConnection 是一个变体,我能想到的另一个解决方法是将其设置为连接的 ConnectionString 属性。这行得通,但它每次都会创建并打开一个新连接,坦率地说我不喜欢它。
c# - ADOX 表列的“可空”属性?
我正在尝试使用 C# 创建一个 Access 文件 (.mdb)。我正在从 SQL 中为遗留进程导出数据。我让它工作了,我面临的唯一问题是将列设置为可为空。
这是我所拥有的(为简洁起见,删除了大多数列):
尝试设置“Nullable”属性时出现以下错误:“在与请求的名称或序号相对应的集合中找不到项目。”
我发现是否使用Required 或Nullable 的报告相互矛盾,但我都尝试过并得到相同的结果。
知道为什么我无法设置可为空的属性吗?在拉取数据时,我可能只是懒惰,默认空值是空格,但如果可能的话,我想避免这种情况。
编辑:正如汉斯在评论中提到的,我不得不改用 Attributes 属性:
c# - 方法 'Open' 没有重载需要 1 个或多个参数
我有一个关于 ADOX 的错误,我不知道如何解决。
所述错误是“方法'Open'没有重载需要一个参数。这里有好心人能帮帮我吗?谢谢
c# - 如何使用 ADOX 在 C# 中设置 MS Access 字段标题属性
你能告诉我如何使用 ADOX 在 C# 中设置 MS Access 字段标题属性吗?
我已经尝试过这个设置:
和
但我遇到以下错误消息:
ADODB.属性
在与请求的名称或序号对应的集合中找不到项目。
谢谢
c# - ADOX 或 SQL DDL
我尝试了两种方法在 ADOX 目录类生成的新 Ms Access 数据库中创建表。第一种方法是使用 ADOX 类和属性来创建列和表,并最终在创建数据库的同时将它们添加到数据库中。第二种方法是使用 OleDbConnection 类并执行 SQL DDL 命令两个在空数据库中创建表。
对我来说,这两种方法都很好,但我真的需要知道哪种方法在现实中实施得更好?
谢谢