Programming/Database

OCCI 를 이용한 DB 조회 시 heap corruption 에러 발생

cancelmind 2011. 8. 25. 16:25

stmt = conn->createStatement ("SELECT id, name FROM tb_user");
ResultSet *rs = stmt->executeQuery();
  try{
   while (rs->next())
   {
    cout << "id: " << rs->getInt(1) << endl;
    cout << "jname: " << rs->getString(2) << endl;
  }catch(SQLException ex)
  {
   cout<<"Exception thrown for displayRow"<<endl;
   cout<<"Error number: "<< ex.getErrorCode() << endl;
   cout<<ex.getMessage() << endl;
  }

물론 Enviroment 와 Connection은 연결 된 상태

getString 시 읽어올 데이터 크기가 15byte를 초과할 경우 heap corruption 이 발생되면서 프로그램이 죽어버림

7시간동안 구글링 해 본 결과 std::string 이 죽을 때 이중으로 delete 해서 그렇단다.

맞는 말인지는 모르겠고...

찾아보면 mysql 쪽도 동일한 문제가 있는데 그건 /MT or /MD 옵션이 안맞아서 그렇다더군..

여튼 occi 로는 답이 없다.

occi 말고 oci로 코딩해야겠다..