timesten 的TNS name
小弟,一个新手,写了一个C语言程序,打算和timesten连接,我用的是VC6.0编译等,用timesten自带的proc进行的预编译,我的C程序和timesten在同一台电脑上运行,当我不用TNS name,只用用户名密码连接登陆时,它显示“protocol adapter error“,当我想再加上TNS name(我在程序中用网络服务名,但我不知道我的网络服务名是什么,可能没建立)时,我却不知道自己程序的 TNS name 是什么,应该如何建立。难道在同一台机子上也必须要用TNS name 吗?当我把我的网络服务名随便写个时,它提示 “ORA - 12154:TNS :could not resolve the connect identifier specified”,当然,我的用户名和密码是没问题的,因为不用C程序登陆时,直接在数据库上用用户名和密码是能成功登陆的。另外,我的电脑上同时装了timesten server 和 client.望知道的大侠给予指导,小弟着急,谢谢啦。
下面是小弟的简单程序,仅是连接数据库。
我认为TNS name就是网络服务名,不知道对不对,更不知道在timesten如何建立TNS name。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
void connect();
EXEC SQL BEGIN DECLARE SECTION;
char username[20];
char password[20];
char server[20];
int HSno=1;
int Hcno=1;
float HSp=1;
int HSt=1;
EXEC SQL END DECLARE SECTION;
void main()
{
connect();
printf(" 数据库操作结束!");
}
void connect()
{
printf("请输入用户名:");
gets(username);
printf(" 请输入密码:");
gets(password);
printf(" 网络服务名:");
gets(server);
/*连接到数据库;*/
EXEC SQL CONNECT :username IDENTIFIED BY :password using :server;
if(sqlca.sqlcode==0)
printf("连接成功!");
else
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
}
------解决方案--------------------
或者找到tnsnames.ora文件,添加如下信息:
/*输入服务名(任意的)*/=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = /*远程数据库ip或主机名*/)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = /*远程数据库名称*/)
)
)