以下是我的代码,想查看某张表的字段属性,该段代码是放在一个线程里的,也能获取到相关字段的属性,但是奇怪的是出了该 try 代码后就出现异常:
Debug Assertion Failed!File:dbgdel.cpp
Line: 47Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)查看命令堆栈后,感觉是 vector<MetaData>  listOfColumns 释放出了问题,但是参看了 oracle 自带的范例也是类似调用的,所以一直无法解决,恳请高手一起研究,指点一二。try {
m_stmt = m_conn->createStatement ("select * from TableA");
ResultSet *rs = m_stmt->executeQuery();vector<MetaData>  listOfColumns = rs->getColumnListMetaData();unsigned int uiColumnNum = listOfColumns.size();
TRACE("字段数=%u\n", uiColumnNum);for (i=0; i<uiColumnNum; i++)
{
   MetaData columnObj = listOfColumns[i];   TRACE("%d 列名:%s\n", i+1, columnObj.getString (MetaData::ATTR_NAME).c_str());

   TRACE("%d 类型:%d, %s\n", i+1, columnObj.getInt(MetaData::ATTR_DATA_TYPE), getTypeString(columnObj.getInt(MetaData::ATTR_DATA_TYPE)).c_str());
  TRACE("%d 大小:%d\n", i+1, columnObj.getInt(MetaData::ATTR_DATA_SIZE));
  TRACE("%d 精度:%d\n", i+1, columnObj.getInt(MetaData::ATTR_PRECISION));
  TRACE("%d 数值范围:%d\n", i+1, columnObj.getInt(MetaData::ATTR_SCALE));
  if( columnObj.getBoolean(MetaData::ATTR_IS_NULL) )
     TRACE("%d 允许为空\n", i+1);
  else
     TRACE("%d 不允许为空\n", i+1);
}
m_stmt->closeResultSet (rs);
}
catch(SQLException ex)
{
   .....
}