Oracle数据库OCCI的问题

Zhww_Blog 2016-08-18 09:14:50
while (set->next()){
try
{
cout << set->getInt(1) << endl;//NUMBER
cout << set->getDouble(2) << endl; //NUMBER(11,0)这是
cout << set->getString(3) << endl; //varchar2(15)
cout << set->getString(4) << endl;//varchar2(10)
}
catch (oracle::occi::SQLException &e){
cout << "Error code:" << e.getErrorCode() << ", message:" << e.getMessage() << endl;
}

}

[b]问题1:执行到getstring(3)的时候报错。错误如下:
0x000007FEEEB3511F (msvcp120d.dll) (ConsoleApplication1.exe 中)处的第一机会异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

问题2:数据库中的类型 varchar2(15) 是用getstring 取吗?number 类型是用getInt取吗?因为网上说0XC0000005 是内存溢出了。
...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghx287524027 2016-08-18
  • 打赏
  • 举报
回复
得到数据是没问题的,一些基础操作可以参考 http://blog.csdn.net/xiaobai1593/article/details/6671722 但是你这是在销毁对象的时候报错的,是不是释放已经释放了的对象产生的错误,建议进入调试模式看看具体怎么回事
Zhww_Blog 2016-08-18
  • 打赏
  • 举报
回复
追加描述:
getString(3);能在DOS窗口上显示出来数据。
1
2
zww

显示上面3行 前3个都显示出来了。跟踪代码得到
void _Free_proxy()
{ // destroy proxy
typename _Alloc::template rebind<_Container_proxy>::other
_Alproxy;
this->_Orphan_all();
_Alproxy.destroy(this->_Myproxy) ; / /这里报错了!!!!!!!!!!这不是释放嘛!
_Alproxy.deallocate(this->_Myproxy, 1);
this->_Myproxy = 0;
}
Zhww_Blog 2016-08-18
  • 打赏
  • 举报
回复
还有个问题 就是我电脑需要注册oracle提供的基础类库吗?我只是直接复制到dubug目录下。运行调试时候就能找到这些dll。但是就是执行到getstring 取varcha2(15)这时候就报错了 提示0x000007FEEEB3511F (msvcp120d.dll) (ConsoleApplication1.exe 中)处的第一机会异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。
Zhww_Blog 2016-08-18
  • 打赏
  • 举报
回复
getString(3) 能接受数据库中的varchar2(15)这种类型吗?为什么会提示错误呢?
ghx287524027 2016-08-18
  • 打赏
  • 举报
回复
对于问题2: 数据库中的varchar2(15) 就相当于char或者string,如果没有小数的情况下number就相当于int。在oracle中 number(10,0) 可以表示10位长度的数字,并且不包含小数;而 number(10,1) 则表示有 1 位小数,依次类推。
Zhww_Blog 2016-08-18
  • 打赏
  • 举报
回复
明白了 set->next 他只是说后面有数据。 并不去取数据。除非select 后面家 where 条件指定取那一条。 问题: 但是还是不明白为什么加个 变量就行了呢?static string 才行?????才不报错误。
Zhww_Blog 2016-08-18
  • 打赏
  • 举报
回复
改成下面这样就可以很奇怪。

// 2、查询数据库操作
	string sql = "select to_char(uiNo),to_char(userID),uiUserName,uiPassword   from userInfo ";
	ResultSet* set = obj.ExecuteQuery(sql.c_str());	
	
while (set->next()){
		try
		{
			static string var_sa = set->getString(1);
			cout << var_sa << endl;//数据库中的类型是NUMBER
			static string  var_sb = set->getString(2);
			cout << var_sb << endl;  //数据库中的类型是NUMBER(11,0)这是
			static string var_sc = set->getString(3);
			cout << var_sc << endl; //数据库中的类型是varchar2(15)
			static string var_sd = set->getString(4);
			cout << var_sb << endl;//数据库中的类型是varchar2(10)

		}
		catch (oracle::occi::SQLException &e){
			cout << "Error code:" << e.getErrorCode() << ", message:" << e.getMessage() << endl;
			cout << e.what() << endl;
		}
	}
但是新的问题又来了。 打印出来的都是第一条数据。求解答?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧