MS Access 连接字符串中的硬编码凭据(受密码保护)

Hard code credentials in MS Access connection string (password protected)

我想对用于连接到 Access 数据库的凭据进行硬编码。

我的连接字符串目前看起来像

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $dbName;

这工作正常,但系统提示我输入 "User Name" 和 "Password"。我研究了 Access 连接字符串,但我只能找到一个包含密码(不是用户)

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\Your_Database_Name.mdb; Jet OLEDB:Database Password=Your_Password"

我试过使用它(以及 user/username/uid 等的组合),但没有找到任何有效的方法。

这是弹出的 window(服务名称是自动填充的):

看起来类似于:Oracle ODBC Driver Connect always asking for password

我认为这与链接到 oracle 数据库的 Access 数据库有关。这不是我能控制的吗?

根据方便的参考页 ConnectionStrings.com,像这样传递 User Id=<username>Password=<password>

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;
Password=Pa$$w0rd;

您可以直接访问链接的 table,方法是使用其连接字符串并填写用户和密码。对于 Oracle,连接字符串结构可能因使用的提供程序而异。查看 ConnectionStrings.com 以获取选项列表(最有可能的选项是 Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername; Password=myPassword;)。

您可以通过在 Microsoft Access 中查询 MSysObjects 来获取链接 table 的当前连接字符串:

SELECT MSysObjects.Connect
FROM MSysObjects
WHERE MSysObjects.Name="MyLinkedTableName";

如果需要,您甚至可以更改连接字符串以包含您的用户名和密码(参见 this answer)。

但是请注意,最初在 Access 中链接 table 的人选择不包含用户名和密码。在不安全的 Access 数据库中包含用户名和密码可能会带来安全风险。

此外,请注意,如果您直接连接到 Oracle 数据库,则必须引用那里定义的 table 名称,并使用正确的 SQL 变体来查询它。