语言理解问题

勤久智远 2013-01-30 11:37:38

//L1Point.h
class L1Point
{
public:
string TagName;

//.cpp OCCI访问Oracle数据库
ResultSet *rset = stmt->executeQuery ();
while (rset->next ())
{
L1Point p1;
if(!rset->isNull(1))
{

//使用这句进行赋值发生错误
p1.TagName=rset->getString(1);

//使用下面两句进行赋值可以通过,有何不同,为什么
string nm=rset->getString(1);
p1.TagName=nm;

}


错误:
server.exe 中的 0x1048ad7a (msvcp100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xccccccd0 时发生访问冲突
...全文
202 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwk000 2013-06-20
  • 打赏
  • 举报
回复
oracle库和vs版本的问题
漫步者、 2013-01-30
  • 打赏
  • 举报
回复
ResultSet *rset = stmt->executeQuery (); 断点到这,看你的这个接口的返回值
唯恐天下不乱 2013-01-30
  • 打赏
  • 举报
回复
调试看看rset是否有值吧
youyou1912 2013-01-30
  • 打赏
  • 举报
回复
两者语法不一样, 关键看rset->getString(1)返回参数类型和实际的值, 用调试器看一下. 下面是实际调用细节:

         //此处调用的是: string::operator=(const unsigned char*)  <= 崩溃
         p1.TagName=rset->getString(1);
      
         //此处调用的是: string:string(const unsigned char*) <= 不崩溃
         string nm=rset->getString(1);

         //此处调用的是: string:operator=(const string&)
         p1.TagName=nm;

赵4老师 2013-01-30
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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