c++ - 从 ubuntu 连接到 Oracle 数据库

标签 c++ oracle ubuntu

我想在 Ubuntu 中使用 C++ 连接到本地网络中的 Oracle 数据库。据我所知,这可以通过即时客户端库来完成。但是我没有成功连接。

我尝试过其他库,例如 soci、ODBC ..,但它们也失败了。

我可以使用 Oracle SQL 开发人员 GUI 连接到这个数据库,没有任何问题。但是使用其他库我会遇到许多不同的错误。我为您列出了其中一些。

使用 InstantClientLibrary12

user="XYZ";
pass="XYZ";
db="mdw.dbs.sharif.edu:1521";
Environment * env = Environment::createEnvironment(Environment::DEFAULT)
Connection * conn = env->createconnection(user,pass,db); //here it gives error

给出这个错误:

     Error: ORA-12163 - TNS:connect descriptor is too long

使用社交图书馆

      session sql(soci::oracle,"service=mdw.dbs.sharif.edu:1521 user=XYZ pass=XYZ"); 

这给出了这个错误

      ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

这些错误是因为 Oracle 没有正式支持 Ubuntu 吗?有没有人在 Ubuntu 中成功连接到 Oracle DB?

最佳答案

您的问题与开发无关。您的 oracle 客户端的 tnsnames.ora 文件存在配置问题。你应该在这个结构上重新配置它:

<addressname> =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = <hostname>)(Port = <port>))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = <service_name>)
 )
)

您可能忘记在文件中指定SERVICE_NAME。请记住 tnsnames.ora 文件位于您的/network/admin 目录中。

希望对您有所帮助。

关于c++ - 从 ubuntu 连接到 Oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44326678/

相关文章:

linux - 回答终端查询并自动登录ssh

linux - bash 脚本错误 - 为变量赋值

c++ - Dev C++ 在指针地址的情况下给出不同的结果

database - 错误 (7,11) : PLS-00201: identifier 'NA.TITLE_ID' must be declared

oracle - 如何在oracle中创建具有动态列名和动态数据类型的动态表,而不需要任何 View 或任何其他表类型

sql - 简单的字符串比较条件使查询运行时间更长

php - 我从 apache 收到此错误

c++ - 混合 std::cout 的奇怪输出

c++ - 为什么 C++11 使 std::string::data() 添加一个空终止字符?

c++ - 在基类中使用派生类的常量