occi获取表,列,类型
来源:互联网 发布:ios数据存储方式 编辑:程序博客网 时间:2024/04/30 21:34
create table temp_test(iid_number number, name_varchar2 varchar2(32),
num_53 number(5,3), char_5 char(5), long_type long, raw_20 raw(20),
blob_type blob, integer_type integer , stat_time_date date);
Environment *env;
Connection *conn;Statement *stmt;
ResultSet *rs;
env = Environment::createEnvironment();//创建环境变量
conn = env->createConnection(username,password,connstring); //创建数据库连接对象
stmt = conn->createStatement();//创Statement对象
string sql = "select * from temp_test";
stmt->setSQL(sql);//准备SQL语句
// 逐行获取表字段
try
{
rs = stmt->executeQuery();//执行SQL语句,返回结果集
while (rs->next()) //取数据
{
cout<<rs->getString(1)<<""<<rs->getString(2)<<""<<rs->getInt(3)<<endl;
}
}
catch(SQLException &ex) //异常处理
{
cout << " Error Number "<< ex.getErrorCode() << endl;
cout << ex.getMessage() << endl;
}
///获取表字段属性temp_test为表名
MetaData custtab_metaData = conn->getMetaData("temp_test", MetaData::PTYPE_TABLE);
vector <MetaData> listOfColumns = custtab_metaData.getVector(MetaData::ATTR_LIST_COLUMNS);
unsigned int uiColumnNum = listOfColumns.size();
printf( "字段数=%u\n ", uiColumnNum);
for (int i=0; i <uiColumnNum; i++)
{
MetaData columnObj = listOfColumns[i];
//cout<<"columnObj.getType():"<<columnObj.getType()<<endl;
printf( "%d 列名:%s\n ", i+1, columnObj.getString(MetaData::ATTR_NAME).c_str());
printf( "%d 类型:%d,\n ", i+1, columnObj.getInt(MetaData::ATTR_DATA_TYPE)/*, getTypeString(columnObj.getInt(MetaData::ATTR_DATA_TYPE)).c_str()*/);
printf( "%d 大小:%d\n ", i+1, columnObj.getInt(MetaData::ATTR_DATA_SIZE));
printf( "%d 精度:%d\n ", i+1, columnObj.getInt(MetaData::ATTR_PRECISION));
printf( "%d 数值范围:%d\n ", i+1, columnObj.getInt(MetaData::ATTR_SCALE));
if( columnObj.getBoolean(MetaData::ATTR_IS_NULL) )
printf( "%d 允许为空\n ", i+1);
else
printf( "%d 不允许为空\n ", i+1);
int nType = columnObj.getInt(MetaData::ATTR_DATA_TYPE);
switch (nType)
{
case SQLT_DAT:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is date\n";
break;
case SQLT_NUM:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is number\n";
break;
case SQLT_CHR:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is varchar2\n";
break;
case SQLT_STR:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is SQLT_STR\n";
break;
case SQLT_LNG:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is SQLT_LNG\n";
break;
case SQLT_BLOB:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is SQLT_BLOB\n";
break;
case SQLT_INT:
cout<<columnObj.getString(MetaData::ATTR_NAME).c_str()<<":is SQLT_INT\n";
break;
default:
break;
}
}
//通过结果集获取字段属性
/* Create a statement and associate it with a select clause */
string sqlStmt="temp_test";
Statement *stmt=conn->createStatement(sqlStmt);
/* Execute the statement to obtain a ResultSet */
ResultSet *rset=stmt->executeQuery();
/* Obtain the metadata about the select list */
vector<MetaData>cmd=rset->getColumnListMetaData();
/* The metadata is a column list and each element is a column metaData */
int dataType=cmd[i].getInt(MetaData::ATTR_DATA_TYPE);
conn->terminateStatement(stmt);//终止Statement对象
env->terminateConnection(conn);//断开数据库连接
Environment::terminateEnvironment(env);// 终止环境变量
- occi获取表,列,类型
- OCCI调用带有返回结果集的存储过程,获取结果集中指定列的值
- OCCI调用带有返回结果集的存储过程,获取结果集中指定列的值
- SQLite C++获取表信息、获取列名、获取列类型
- 获取某个表的列名类型和长度
- 通过同义词获取同义词对应表的列名和列的类型
- OCCI
- 列类型和表类型
- sql 类型转换,获取列字符串长度
- OCCI 获取系统时间函数 C++
- SQL 新增列、删除列、改变列类型、添加列默认值、删除列默认值和获取列默认值的方法
- SQL语句来获取一个表的所有列的信息,如,列名、类型、长度等
- SQL语句来获取一个表的所有列的信息,如,列名、类型、长度等
- DatabaseMetaData获取数据库信息和表信息(表的列名,类型,主键等)SQL java
- java获取数据库的列名,类型等信息
- java获取数据库的列名,类型等信息
- java获取数据库的列名,类型等信息
- java获取数据库的列名,类型等信息
- 学习过程中遇到的Exception
- Column Name Precedence
- php Smarty模版引擎中引入javascript源文件
- 黑马程序员—C#访问修饰符 public、private、protected 和 internal
- 关于领导与员工相处的一个例子
- occi获取表,列,类型
- 中国地图偏移问题
- IOS开发网络加载图片缓存策略之──ASIDownloadCache缓存策略
- v校:关于白名单文件劫持与和谐启动的那些事儿~
- N的阶乘递归算法
- vijos1071【动态规划】
- mysql远程连接数据库慢的解决方案
- poj 3009(深度搜索)
- UITableView用法