日期:2014-05-16  浏览次数:20731 次

关于OCCI的ResultSet ,坐等结贴
关于OCCI的ResultSet中既有getInt(),又有getString,那么调用哪个方法是和数据库中字段属性的类型有关吗?
 
比如数据库字段是整形我就getInt()? 
但是听说结果集中的所有结果在C++中都是字符的? 要自己转?
getInt(1)中的这个1就是第一个属性吧? 是和自己的select语句的第一个属性name_id相对应吧?

    
env = Environment::createEnvironment (Environment::DEFAULT);
        conn = env->createConnection("Jammy", "1234", "ora92");

        string sqlStmt = "SELECT name_id, name FROM tb_name_info";
        stmt = conn->createStateMent(sqlStmt);
        ResultSet* rset = stmt->executeQuery();
        while(rset->next())
        {
            cout <<"name_id:" << rset->getInt(1) 
                   << " name:" << rset->getString(2)  << endl; 
        }



------解决方案--------------------
如果数据库里面是整数,那你调用getInt,它就直接返回给你,如果你调用getString,它就先将整数转成字符串,再传给你。
再举个例子,如果数据库里面是字符串,你仍然可以调用getInt,只是它会把字符串转换成整数再传给你,如果转不了,就返回0。

数据库里面的数据类型,你是可以从表头里面得到的。至于具体怎么得到,我记不得了,如果你需要,我回去看看我的老代码,可以回复给你。
getInt里面的序号,指的是你select中列的序号,因为不在select中的列,根本没查询。