//查询结果
ResultSet *rs1 = stmt->executeQuery("SELECT REF(a) from LZH_ITEM a where I_NO = '1'");

rs1->next();//定义一个指向结果的第一行的引用
Ref<MyItem> item1 = rs1->getRef(1);//所谓的pin()
string str_i_name = item1->getItemName();
cout<<str_i_name<<endl;数据可以正确的取出,但问题是在程序return前的,程序会隐式的析构这些变量,而rs和item1是指向同一块数据的引用,会析构两次导致错误,苦思不得其解,特来请教。望高手予以指点,高分答谢,答案务请详尽。万分感谢!

解决方案 »

  1.   

    其实是Ref <MyItem> item1 = rs1->getRef(1);这句是浅拷贝,而非深拷贝,所以,出了问题。但不知如何解决。
      

  2.   

    已经解决。最终办法,将程序改为:
    //查询结果 
    ResultSet *rs1 = stmt->executeQuery("SELECT REF(a) from LZH_ITEM a where I_NO = '1'"); rs1->next(); //定义一个指向结果的第一行的引用 
    Ref <MyItem> *tem1 = new Ref <MyItem>();term1 = rs1->getRef(1); //所谓的pin() 
    string str_i_name = item1->getItemName(); 
    cout < <str_i_name < <endl; //最后delete tem1;
    term1 = NULL;