用TADOQuery回来数据如果字段为DBNull调用strcpy会出错么
用TADOQuery返回数据如果字段为DBNull调用strcpy会出错么?
用TADOQuery查询数据库,如果结果里包换Null数据调用一下方法时会出错么?
比如
TADOQuery *query =new TADOQuery(NULL);
while(!query->Eof)
{
id=query->FieldByName("id")->AsString; //这里会报错么?如果数据库中id字段为null
strcpy(data[i].id,id.c_str()); //这里会报错么?
}
如果会出错应该怎么判断是否是能呢?if(query->FieldByName("id")) 这样?数据库null和C++的null是同一个么?
------解决方案--------------------
if (!query->FieldByName("id")->IsNull)
------解决方案--------------------
id=query->FieldByName("id")->AsString; //这里会报错么?如果数据库中id字段为null
不会报错.
strcpy(data[i].id,id.c_str()); //这里会报错么?
可能,FieldByName("id")->AsString.c_str()可能返回NULL,
这样安全些,
if( !is.IsEmpty() )
{ strcpy(data[i].id,id.c_str()); }
------解决方案--------------------
这样安全些,
if( !id.IsEmpty() )
{ strcpy(data[i].id,id.c_str()); }
用TADOQuery查询数据库,如果结果里包换Null数据调用一下方法时会出错么?
比如
TADOQuery *query =new TADOQuery(NULL);
while(!query->Eof)
{
id=query->FieldByName("id")->AsString; //这里会报错么?如果数据库中id字段为null
strcpy(data[i].id,id.c_str()); //这里会报错么?
}
如果会出错应该怎么判断是否是能呢?if(query->FieldByName("id")) 这样?数据库null和C++的null是同一个么?
------解决方案--------------------
if (!query->FieldByName("id")->IsNull)
------解决方案--------------------
id=query->FieldByName("id")->AsString; //这里会报错么?如果数据库中id字段为null
不会报错.
strcpy(data[i].id,id.c_str()); //这里会报错么?
可能,FieldByName("id")->AsString.c_str()可能返回NULL,
这样安全些,
if( !is.IsEmpty() )
{ strcpy(data[i].id,id.c_str()); }
------解决方案--------------------
这样安全些,
if( !id.IsEmpty() )
{ strcpy(data[i].id,id.c_str()); }