如何使用 MS Access 连接字符串进行 Oracle 身份验证

问题描述 投票:0回答:1

使用 C# 和 ADO.NET,我正在尝试自动生成当前在 MS Access 数据库中作为宏运行的报告。当您在 Access 中执行宏时,它会提示您输入 Oracle 凭据,然后在 Excel 工作表中创建报告。

我的代码运行良好,我能够创建这些报告,但是当我的代码执行时,它会提示输入 Oracle 凭据。

这个新应用程序将每天晚上运行,并且不会有用户在场输入 Oracle 凭据。

我尝试创建两个单独的连接字符串并同时打开两个连接,但当然它不起作用。然后我尝试使用 Oracle 用户 ID 和密码创建单个连接字符串,如下所示,但也失败了。

<add key="ConnectionString" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ProjectDocs\CE_REPORTS.accdb;User ID=JOHNDOE;Jet OLEDB:Encrypt Database=True;Jet OLEDB:Database Password=*********"/> 

这是我第一次处理不使用其自身身份验证功能的 Access 数据库。请让我知道如何解决这个问题。

谢谢你

c# ms-access ado.net
1个回答
1
投票

好吧,您已经有了 .net 部分,它当然可以创建自己的与 Oracle 的连接(而且应该这样做)。

这确实引出了一个问题:为什么在这里引入.net?如果您只是从 .net 读取/写入 Access 数据表,那么没问题。但您也正在使用 Access 报告。 (所以这就引出了一个问题,在这里使用 .net 到底有什么优势?)。

无论如何,如果您启动 Access,请使用链接表管理器,并在链接过程中选中此框:

因此,当您从 .net 创建 COM 对象(自动复制)时,不应启动 Access 并使用这些链接表。

使用 Access UI 创建到 Oracle 的链接表。但是,请记住 Access 有一个复杂的缓存系统。如果您从 Access 执行登录到 Oracle?那么链接表不需要包含用户名/密码。这意味着实际上您可以从 Access 链接表(但无需用户/密码),然后从 Access 执行一次性登录(VBA 代码)。此登录例程也可以由您正在使用的 Access 的 .net 自动实例调用。

但是,如果您这样做并且在 Access 中设置了正确的链接表,并且在该链接过程中检查了上述“记住”密码,则不应存在登录 Oracle 的提示。

© www.soinside.com 2019 - 2024. All rights reserved.