最近要用C写个访问oracle的小程序,采用OCI方式。现在有个疑问,OCI中连接数据库的函数是int sqlo_connect(int * dbh, char * connect_str),它有两个参数,dbh是返回的连接描述符,connect_str是一个字符串,内容是用户名和密码。这个我就有点疑问了,光提供用户名和密码就能访问ORACLE数据库吗,我感觉应该还要提供数据库服务器名和端口才可以啊。小弟是个菜鸟,希望各位高手帮忙解答啊。
调试欢乐多
但是我知道发了贴子没人顶的痛苦,
我顶一下。能给我个LINUX C连接ORACLE数据库的小程序吗?
这里谢过了。
#include <stdlib.h>
#include "sqlora.h"
static const char * _defuser = "scott@test/tiger";
static int _abort_flag = 0;void sigint_handler(void);void sigint_handler(void) {
printf("Catched SIGINT\n");
_abort_flag++;
}#define RETURN_ON_ABORT if (_abort_flag) { sqlo_rollback(dbh); return EXIT_FAILURE; }int main(int argc, char **argv)
{
const char * cstr = _defuser;
sqlo_db_handle_t dbh;
int stat;
sqlo_stmt_handle_t sth;
double min_income;
char server_version[1024];
int handle; /* handle of the interrupt handler */ if (argc > 1)
cstr = argv[1];
/* init */
if (SQLO_SUCCESS != sqlo_init(SQLO_OFF, 1, 100)) {
printf("Failed to init libsqlora8\n");
return EXIT_FAILURE;
} /* register the interrupt handler */
sqlo_register_int_handler(&handle, sigint_handler); /* login */
if (SQLO_SUCCESS != sqlo_connect(&dbh, cstr)) {
printf("Cannot login with %s\n", cstr);
return EXIT_FAILURE;
}
}
这个串里如果没连接串,则默认连接本机的oracle数据库
如果连接串里加上服务名如:scott@test/tiger@testdb
这里的testdb是在tnsnames.ora里定义的
里面包含了ip和sid等信息
我的装过
ORACLE9I的
REDHAT LINUX ADVANCE SERVER2.1上为什么提示找不到头文件
sqlora.h
能找到
sqlca.h但提示不能用。