【问题标题】:Password of connection string in Pass Through Query propertiesPass Through Query 属性中连接字符串的密码
【发布时间】:2015-02-26 12:18:10
【问题描述】:

我正在通过 MS Access 中的传递查询调用 oracle 存储过程。 在通过查询属性时,我们正在使用密码保存连接字符串。我不想让用户看到密码。 有什么方法可以通过查询加密密码。

连接字符串包含 ODBC;DSN=NEW_ODBC;UID=XXXXX;PWD=XXXXXXX;DBQ=XXXXXX;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB =T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O ;MLD=0;ODA=F;

我正在使用 docmd 调用传递查询

DoCmd.OpenQuery "qry_into_table", acViewNormal, acEdit

如果我从上面的字符串中删除 PWD,每次它都会要求输入密码。我听说过使用 DSNless 连接的概念,但我不确定如何为 odbc 创建 dsnless 连接。我正在使用用户 dsn。

有什么办法可以加密密码或者用户看不到密码??

谢谢

【问题讨论】:

  • 看看THIS是否有帮助。
  • 您是否考虑过跳过直通并使用 ADO?
  • @Fionnuala。不,我没有尝试。请告诉我如何跳过查询并使用 ADO

标签: vba ms-access


【解决方案1】:

如果您链接所有表以及传递查询的表并忽略 uid/密码,那么您的查询和链接表等将运行良好。您需要在应用程序启动时执行 JUST ONE 登录命令。

因此,在您的 DSNless 重新链接代码中,包含传递查询。

如何消除在此处概述的链接表中包含用户 ID 和密码的需要:

电源提示:提高数据库连接的安全性

https://www.microsoft.com/en-us/microsoft-365/blog/2011/04/08/power-tip-improve-the-security-of-database-connections/

上述方法也适用于传递查询。

结果是你可以像这样在代码中执行 pass through 查询:

Currentdb.Execute "qry_into_table"

您甚至可以使用以下代码将值传递给存储过程:

With Currentdb.QueryDefs("MyPass")
   .SQL = "exec sp_MyUpdate " & strParm1
   .execute
End With

请注意如何干净,以及我们如何不必使用上述代码处理连接字符串。

所以上面的小窍门确实消除了大量的代码,消除了调用存储过程时引入 ADO 的需要,也消除了在代码中处理杂乱的连接字符串的需要。

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2014-06-11
    相关资源
    最近更新 更多