【发布时间】:2014-02-13 18:45:18
【问题描述】:
我想知道是否有人成功编写了使用 Oracle OCI API 并使用 Oracle 钱包进行身份验证的 C/C++ 应用程序。
我已经使用 mkstore 成功创建了钱包,并将凭据存储在其中。我的 tnsnames.ora 和 sqlnames.ora 文件具有正确的内容,并且我的 ORACLE_HOME 和 ORACLE_SID 环境变量设置正确,因为我可以使用 sqlplus /@XE 成功使用它来验证 sqlplus 会话。
在同一个终端中,我创建了一个简单的 C 程序,它分配 OCIEnv、OCIServer、OCIError 和 OCIsvcCtx 句柄并调用 OCIEnvCreate()。这一切都很好。
然后我尝试调用任何一个“连接”函数,例如 OCILogon(也尝试过 OCILogon2 和 OCISessionPoolCreate),但我总是得到“无效的用户名/密码”。我正在尝试调用它,因为我看到它是为我调用 sqlplus 定义的,即长度为 0 的空用户名和密码,以及具有适当长度的“XE”的 dbname。 (为了完整起见,我还尝试了“@XE”和“/@XE”的数据库名称)
我看到有一个用于打开钱包并询问其内容的安全 API,但我认为这是想要直接与钱包内容交互的应用程序(即添加/删除凭据等)。也许这是我的一个错误假设......
关于如何以编程方式执行此操作的宝贵信息很少,因此,如果有人有任何指针或可以简单地以这种方式连接到数据库的小型工作示例,我将非常感激。
非常感谢
本
【问题讨论】:
标签: c++ c oracle authentication oracle-call-interface