最近要用C写个访问oracle的小程序,采用OCI方式。现在有个疑问,OCI中连接数据库的函数是int sqlo_connect(int * dbh, char * connect_str),它有两个参数,dbh是返回的连接描述符,connect_str是一个字符串,内容是用户名和密码。这个我就有点疑问了,光提供用户名和密码就能访问ORACLE数据库吗,我感觉应该还要提供数据库服务器名和端口才可以啊。小弟是个菜鸟,希望各位高手帮忙解答啊。

解决方案 »

  1.   

    兄弟我也是菜鸟,
    但是我知道发了贴子没人顶的痛苦,
    我顶一下。能给我个LINUX C连接ORACLE数据库的小程序吗?
    这里谢过了。
      

  2.   

    #include <stdio.h>
    #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;
      }
    }
      

  3.   

    scott@test/tiger
    这个串里如果没连接串,则默认连接本机的oracle数据库
    如果连接串里加上服务名如:scott@test/tiger@testdb
    这里的testdb是在tnsnames.ora里定义的
    里面包含了ip和sid等信息
      

  4.   

    请问楼主:
    我的装过
    ORACLE9I的
    REDHAT LINUX ADVANCE SERVER2.1上为什么提示找不到头文件
    sqlora.h
    能找到
    sqlca.h但提示不能用。