m_env = Environment::createEnvironment(Environment::DEFAULT);
Statement *stmt;
ResultSet *result;
try {
m_conn=m_env->createConnection("tc_szpt","c153","242SZPT");
 stmt=m_conn->createStatement();
 result = stmt->executeQuery("select * from tc_szpt.t_build_person");
while (result->next())
{
string username = result->getString(1);
CString cc;
cc.Format("%s",username.c_str());
username.empty();
}//执行到这里弹出这个错误的(VS2008程序:windows已在xxx.exe中触发一个断点,其原因可能是堆被损坏,这说明xx.exe中或它所加载的任何DLL中有bug。 )
stmt->closeResultSet(result);
    } catch (SQLException& ex) {
string aa = ex.getMessage();
CString cc;
cc.Format("%s",aa.c_str());
AfxMessageBox(cc);
return ;
    }
   m_conn->terminateStatement(stmt);
   m_env->terminateConnection(m_conn);
   Environment::terminateEnvironment(m_env);

解决方案 »

  1.   

    这个问题不是库的吧。你把sql部分去掉调试一下
      

  2.   

    string username = result->getString(1);
    这句去掉就没问题了
      

  3.   

    晕 要怎么解决呢,用 getString()获取完数据库的数据 就报错
      

  4.   

    string username = result->getString(0);
    试下,如果没问题。证明你数据库只有一条记录。因而string username = result->getString(1);
    报错
      

  5.   

    string username = result->getString(0);
    参数改成0 的话 也报错“*.exe中的0x10047bf4处未处理的异常:0xc0000005:读取位置0x0000000时发生访问冲突”
      

  6.   

    好像是因为 getString()有长度限制,怎么解决呢