c++ - OCCI与C++错误:TNS:.net服务名称未正确指定

标签 c++ oracle occi

我创建了一个简单的C++程序来将Oracle OCCI与OracleDB实例连接。

这是代码:

#include <iostream>
#include <string>
#include <occi.h>

//  Connection information
const std::string userName = "admin";
const std::string password = "password";

const std::string connectString = "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.190)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCLCDB)))";                    

//  Connection enviroment
oracle::occi::Environment *env = oracle::occi::Environment::createEnvironment();


int main() {

int succes;

oracle::occi::Connection *conn = env->createConnection(userName, password, connectString);
succes = 0;

std::string id;
std::cin >> id;

std::string anw = "SELECT * FROM BESTAND WHERE ID=";

std::string cnw = anw + id;

oracle::occi::Statement *stmt = conn -> createStatement(cnw);

oracle::occi::ResultSet *rs = stmt -> executeQuery();

while (rs -> next()) {

std::string b = rs -> getString(2);

std::cout << b << std::endl;

}



stmt -> closeResultSet(rs);
conn -> terminateStatement(stmt);
env -> terminateConnection(conn);

oracle::occi::Environment::terminateEnvironment(env);

}

我在CentOS-8上使用g++来编译程序,并且程序可以顺利进行,但是当我执行程序时,出现此错误:
terminate called after throwing an instance of 'oracle::occi::SQLException'
what():  ORA-12162: TNS:net service name is incorrectly specified

有任何人在这里有一个主意,我可以解决这个问题。

最佳答案

是“ORCLCDB”是SERVICE_NAME还是ORACLE_SID?服务名称通常使用域完全限定。您可以尝试以下操作(空格可以):

(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.190)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = ORCLCDB)))

或从TNS侦听器状态中再次检查服务名称,以确保获得正确的值。数据库服务器上的“lsnrctl status”命令应返回 Activity 服务的列表。使用状态为“就绪”的一个。

关于c++ - OCCI与C++错误:TNS:.net服务名称未正确指定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61460493/

相关文章:

c++ - 使用 OCCI 在 Oracle Database 11g 中存储无符号 64 位整数的最佳方法

c++ - 访问字符串中字符的混淆方式

c++ - 编程语言函数在内存中位于哪里?

c++ - 如何调试occi使用Clion?

database - 架构正在变化的应用程序的数据迁移过程?

oracle - 实例 "PLSExtProc",状态未知

C++使用单个输入字节文件的不同部分在堆栈上实例化成员类

c++ - 不占用客户区的子窗口

sql - 我可以连接来自同一个表但具有不同过滤器的两个 Select sum SQL 查询吗?