我用PRO*C写了一个连接数据的测试程序,但是在运行时报了TNS-12538的错误信息。int db_login(un,pd,cs)
char *un,*pd,*cs;
{
EXEC SQL BEGIN DECLARE SECTION;
char err_msg[128];
size_t buf_len, msg_len;
VARCHAR username[30];
VARCHAR password[30];
VARCHAR dbstring[30];
EXEC SQL END DECLARE SECTION; /*set oracle option*/
EXEC ORACLE OPTION( ORACA = YES );
EXEC ORACLE OPTION( RELEASE_CURSOR = YES ); strcpy(username.arr,un);
username.len=strlen( username.arr );
strcpy(password.arr,pd);
password.len=strlen( password.arr );
strcpy(dbstring.arr,cs);
dbstring.len=strlen( dbstring.arr );
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbstring;
if( sqlca.sqlcode ){
printf("Connet to Oracle error,user:[%s],passwd:[%s],dbstring:[%s]\n",username.arr,password.arr,dbstring.arr);
buf_len = sizeof(err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
err_msg[msg_len]='\0';
printf("sqlerr:[%s]\n",err_msg);
return -1;
}
printf("Connet to Oracle as user:[%s]\n",username);
return 0;
}运行时报错:
sqlerr:[ORA-12538: TNS:no such protocol adapter]
char *un,*pd,*cs;
{
EXEC SQL BEGIN DECLARE SECTION;
char err_msg[128];
size_t buf_len, msg_len;
VARCHAR username[30];
VARCHAR password[30];
VARCHAR dbstring[30];
EXEC SQL END DECLARE SECTION; /*set oracle option*/
EXEC ORACLE OPTION( ORACA = YES );
EXEC ORACLE OPTION( RELEASE_CURSOR = YES ); strcpy(username.arr,un);
username.len=strlen( username.arr );
strcpy(password.arr,pd);
password.len=strlen( password.arr );
strcpy(dbstring.arr,cs);
dbstring.len=strlen( dbstring.arr );
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbstring;
if( sqlca.sqlcode ){
printf("Connet to Oracle error,user:[%s],passwd:[%s],dbstring:[%s]\n",username.arr,password.arr,dbstring.arr);
buf_len = sizeof(err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
err_msg[msg_len]='\0';
printf("sqlerr:[%s]\n",err_msg);
return -1;
}
printf("Connet to Oracle as user:[%s]\n",username);
return 0;
}运行时报错:
sqlerr:[ORA-12538: TNS:no such protocol adapter]
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货