需要在tnsnames.ora中配置相应的sid,代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
EXEC SQL include sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
VARCHAR dbname[20];
EXEC SQL END DECLARE SECTION;
exec sql declare db_link_name database;
void sql_error()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("/n Oracle error detected:/n");
printf("/n%.70s/n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK RELEASE;
exit(1);
}
/* 连接数据库 */
void connectDB(char *vdbname ,char *uname ,char *passwd){
EXEC SQL WHENEVER SQLERROR DO sql_error();
strcpy(dbname.arr,vdbname);
strcpy(username.arr,uname);
strcpy(password.arr,passwd);
dbname.len=strlen(dbname.arr);
username.len=strlen(username.arr);
password.len=strlen(password.arr);
EXEC SQL CONNECT :username IDENTIFIED BY :password AT db_link_name USING :dbname;
printf("用户:%s ",username.arr);
if(sqlca.sqlcode==0)
printf("成功/n");
else
printf("失败/n");
}
main()
{
char *vdbname="ORCL";
char *vuname="scott";
char *vpasswd="scott";
connectDB(vdbname,vuname,vpasswd);
}