我通过MS Access中的Pass Through Query调用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,每次都要求输入密码。我听说过使用DSN减少连接的概念,但我不知道如何为odbc创建dsn less连接。我正在使用用户dsn。
有没有办法加密密码或者用户看不到密码?
谢谢
答案 0 :(得分:3)
如果你链接所有的表以及pass-through查询和LEAVE OUT的uid /密码,那么你的quires和链表等运行就好了。您需要在应用程序启动时执行JUST ONE登录命令。
因此,在您的DSNless重新链接代码中,请包含pass-though查询。
如何消除在此处列出的链接表中包含用户ID和密码的需要:
电源提示:提高数据库连接的安全性
以上内容也适用于传递查询。
结果是你可以在代码中执行这样的pass through查询:
Currentdb.Execute "qry_into_table"
您甚至可以使用以下代码将值传递给商店过程:
With Currentdb.QueryDefs("MyPass")
.SQL = "exec sp_MyUpdate " & strParm1
.execute
End With
请注意干净,以及我们如何处理上述代码中的连接字符串。
因此,上面的功能提示确实消除了大量代码,无需引入ADO来调用Sproces,并且无需在代码中处理混乱的连接字符串。