刚刚接触otl,发现问题重重,寻求help
首先,ODBC添加数据源(Oracle in OraHome92),测试ok,(用其他工具,如SQL Tools也可以连接访问)
然后VC2008里,工具->选项->VC++目录,添加oci\include和oci\lib
程序如下:
#include <iostream>
using namespace std;#define OTL_ODBC
#include "otlv4.h"otl_connect db;int main()
{
return 0;
}
无错,修改代码如下:
#include <string>
#include <iostream>
using namespace std;#define OTL_ODBC
#include "otlv4.h"otl_connect db;int main()
{
string str_conn("usrname/password@service IP");
 try {  
   
 db.rlogon(str_conn.c_str()); // connect to Oracle  
   
         
         //select(); // select records from table  
   
     }  
   
     catch (otl_exception& p) { // intercept OTL exceptions  
         cerr << p.msg << endl; // print out error message  
         cerr << p.stm_text << endl; // print out SQL that caused the error  
         cerr << p.var_info << endl; // print out the variable that caused the error  
     }  
   
     db.logoff(); // disconnect from Oracle  
   
     return 0;  
}运行后输出:
[Microsoft][ODBC driver for Oracle][Oracle]ORA-12154: TNS:could not resolve service name请高手帮忙看看这是什么原因?曾经运行成功过,中间只是换了一个service,再换回来就出问题了,再把ODBC数据源删掉重做,运行程序,错误又变成了
[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
这又是什么原因呢?对于数据库的这些一直都不是很清楚,请高手指点一二,谢谢!

解决方案 »

  1.   

    [Microsoft][ODBC driver for Oracle][Oracle]ORA-12154: TNS:could not resolve service name
    odbc里面的service配错了。[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 。这里是没有配置odbc或者名字写错了。string str_conn("usrname/password@service IP"); 
    这里的这3个字符串对应成:odbc的用户名、odbc的密码、odbc的名字,试试看?
      

  2.   

    嗯,谢谢crazylaa,是这样的,太谢谢你了。
    还有,如果不用ODBC,而用Oracle的ORA,这种情况下,应该配置些什么呢?是不是只要在机器上安装Oracle的客户端,然后
    #define OTL_ORA
    #include "otlv4.h"string str_conn("usrname/password@servicename"); 
    分别对应Oracle的用户名、密码和服务端IP就可以呢?
      

  3.   

    [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 。这里是没有配置odbc或者名字写错了
      

  4.   

    安装客户端后,通过Net Configuration Assistant配置一个Net服务名连接到oracle服务器。然后 string str_conn("usrname/password@servicename"),对应于数据库的用户名、密码以及你在Net服务名里面指定的本地服务名就可以了,不是服务端IP。
      

  5.   

    补充一下:比如你的服务器SID叫做ORCL(默认是这个名字),那么你本地配置的时候可以重新指定一个服务名比如ORCL1或者直接ORCL也可以,那么这里的ORCL1就是服务名。servicename就写这个ORCL1就可以了。
      

  6.   


    odbc用户名,密码是在哪里设置的啊?