#define OTL_ORA9I
#define OTL_STL
#define OTL_NO_TMPL_MEMBER_FUNC_SUPPORT
#include <otlv4.h>static otl_connect theConn;
try
{
  otl_connect::otl_initialize();
  theConn.server_attach(connect_string.c_str());
  theConn.session_begin(user_name.c_str(), password.c_str());
}
catch
{
  std::cout << "连接BILLDB数据库失败" << endl;
}otl_stream sql;
sql_stmt="select RULE_ID from AI_RULE_PARAM_DEFINE where RULE_ID=:f<int> "
try
{
  cout << sql_stmt << endl;
  sql.open(10,sql_stmt.c_str(),theConn);
  cout << "????" <<endl;
  sql << 123;
}
//catch...为什么只能执行到cout << sql_stmt << endl; "????"打不出来,open应该没有问题的啊
而且就在这里报错并终止:Segmentation fault 
请大家帮忙看看啊 有分加!!!!

解决方案 »

  1.   

    sql_stmt 的类型为指针还是c_str结构?
      

  2.   

    打开的参数不对吧,发去oracle区问问吧.
      

  3.   

    参数应该没问题啊 
    string sql_stmt;
    忘了写上来 不过已经声明过 
      

  4.   

    sql_stmt="select RULE_ID from AI_RULE_PARAM_DEFINE where RULE_ID=:f<int> "
    这个sql语句在oracle里面能够执行吗?有<>里sql语句里我看是问题出在这里了;
    建议你在SQL语句以外把它处理好,然后再带入到SQL语句里;
      

  5.   


    已经试过,在oracle里执行通过了。
    sql.open(10,sql_stmt.c_str(),theConn);
    应该就是这句有问题,就是找不出来啊,急死了 唉
      

  6.   

    查了很多文档 感觉代码应该没问题  可能是编译环境问题
    因为我刚在linux下开发 所以不大清楚makefile该怎么写 各位从这方面帮我想想吧