//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 时发生访问冲突
语法?C++?OCCI
------解决方案--------------------------------------------------------
两者语法不一样, 关键看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;