pro c 访问 MySQL_Pro*C到底能不能连接远程数据库

我的客户端是10gXE,给一远程ORACLE数据库设置了一个tns如下:META_WIN=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=133.37.58.237)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SE...

我的客户端是10gXE,给一远程ORACLE数据库设置了一个tns如下:

META_WIN =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 133.37.58.237)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = META)

)

)

sqlplus tease/tease@META_WIN,连接成功。

使用OCI和OTL编写的测试程序也能连接成功。

用Pro*C编写了一个测试程序,如下:

#include

EXEC SQL BEGIN DECLARE SECTION;

char *username = "tease";

char *password = "tease";

char *dbname = "META_WIN";

char *uid = "tease/tease@META_WIN";

EXEC SQL END DECLARE SECTION;

void main(void)

{

EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbname;

if (sqlca.sqlcode != 0)

{ printf("%s\r\n", sqlca.sqlerrm.sqlerrmc); return; }

else

{ printf("Success\r\n"); }

}

编译成C文件成功,编译生成exe也成功,但运行时出现连接失败,错误信息如下:

“Error while trying to retrieve text for error ORA-12705”

将连接的那个语句替换成EXEC SQL CONNECT :uid; 再试,依然失败,错误信息相同

替换成EXEC SQL CONNECT :uid AT :dbname; 再试,依然失败,错误信息相同

难道Pro*C压根就不能连接远程数据库?

忘了说,XE自身是不带Pro*C的,我是从完整版的10g客户端里将它提取过来使用,将pc文件转化成c或cpp都是一切正常的,我查了一下ORA-12705的错误解释,貌似是说客户端组件不完整,建议重装客户端。看样子有可能是因为XE本身不含Pro*C而无法正常支持pc连接远程数据库,跟Pro*C无关。我觉得或许应该把XE卸掉重新装完整版的10g

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值