最近遇到了一个问题,我想用occi获取oracle数据库表中的内字段名和类型
,但是每次运行到
vector<MetaData>listOfColumns(emptab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS));
for (vector<MetaData>::iterator i = listOfColumns.begin();i!=listOfColumns.end();i++)
{
MetaData columnObj = *i;
cout<<"Column Name:"<<(columnObj.getString(MetaData::ATTR_NAME))<<endl;
cout<<"Data Type:"<<(columnObj.getInt(MetaData::ATTR_DATA_TYPE))<<endl;
}
这段代码是就会出现段错误。内存问题
我查看了 listOfColumns.size() 竟然是个随机值。
不知道哪位大牛遇到同样的问题指点一下。下面是完整代码,并且保证m_con 不为空
用户名 systemMetaData emptab_metaData = m_con->getMetaData( m_table, MetaData::PTYPE_TABLE);
/* Now that you have the metadata information on the EMPLOYEES table,
call the getxxx methods using the appropriate attributes */ /* Call getString */
cout<<"Schema:"<<(emptab_metaData.getString(MetaData::ATTR_OBJ_SCHEMA))<<endl;
/* Call getInt to get the number of columns in the table */
int columnCount=emptab_metaData.getInt(MetaData::ATTR_NUM_COLS);
cout<<"Number of Columns:"<<columnCount<<endl; /* Call getVector for attributes of list type,for example ATTR_LIST_COLUMNS */
try
{
vector<MetaData>listOfColumns(emptab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS));
for (vector<MetaData>::iterator i = listOfColumns.begin();i!=listOfColumns.end();i++)
{
MetaData columnObj = *i;
cout<<"Column Name:"<<(columnObj.getString(MetaData::ATTR_NAME))<<endl;
cout<<"Data Type:"<<(columnObj.getInt(MetaData::ATTR_DATA_TYPE))<<endl;
}
}
catch(exception &e)
{
cout<<e.what()<<endl;
}
catch(...)
{
cout<<"FATAL ERROR"<<endl;
}数据库OracleC
,但是每次运行到
vector<MetaData>listOfColumns(emptab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS));
for (vector<MetaData>::iterator i = listOfColumns.begin();i!=listOfColumns.end();i++)
{
MetaData columnObj = *i;
cout<<"Column Name:"<<(columnObj.getString(MetaData::ATTR_NAME))<<endl;
cout<<"Data Type:"<<(columnObj.getInt(MetaData::ATTR_DATA_TYPE))<<endl;
}
这段代码是就会出现段错误。内存问题
我查看了 listOfColumns.size() 竟然是个随机值。
不知道哪位大牛遇到同样的问题指点一下。下面是完整代码,并且保证m_con 不为空
用户名 systemMetaData emptab_metaData = m_con->getMetaData( m_table, MetaData::PTYPE_TABLE);
/* Now that you have the metadata information on the EMPLOYEES table,
call the getxxx methods using the appropriate attributes */ /* Call getString */
cout<<"Schema:"<<(emptab_metaData.getString(MetaData::ATTR_OBJ_SCHEMA))<<endl;
/* Call getInt to get the number of columns in the table */
int columnCount=emptab_metaData.getInt(MetaData::ATTR_NUM_COLS);
cout<<"Number of Columns:"<<columnCount<<endl; /* Call getVector for attributes of list type,for example ATTR_LIST_COLUMNS */
try
{
vector<MetaData>listOfColumns(emptab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS));
for (vector<MetaData>::iterator i = listOfColumns.begin();i!=listOfColumns.end();i++)
{
MetaData columnObj = *i;
cout<<"Column Name:"<<(columnObj.getString(MetaData::ATTR_NAME))<<endl;
cout<<"Data Type:"<<(columnObj.getInt(MetaData::ATTR_DATA_TYPE))<<endl;
}
}
catch(exception &e)
{
cout<<e.what()<<endl;
}
catch(...)
{
cout<<"FATAL ERROR"<<endl;
}数据库OracleC
解决方案 »
- revoke权限出错,为什么?
- 在TOAD中怎么把excel中的数据导入oracle对应的表中,急啊!!!
- 有个问题问大家
- 如何打开oracle dbf文件 在线等。。。。(100分)
- 这样的视图怎么建立啊?
- 我这个存储过程怎么建不了啊!请问各位大侠!总是提示"创建过程带有编译错误"???
- oracle8i不能安装的怪问题,请大家看看
- 急:点Oracle 8i安装程序的时候为什么没有反应?
- 如何知道当前有那些用户登陆?
- 我在WIN98下装了一个PERSONAL ORACLE请问它默认的用户名和口令都有哪些?如果用DBA身份登陆,应该用哪个?我想新建服务,但是好象表空间
- 储存过程开发-业务逻辑实现-熟悉储存过程开发的人进
- 初始化环境 OCIEnvInit
系统64位的。可能跟系统环境有关。Linux下没有问题的
Oracle的版本和操作系统版本一致可以避免很多问题。