4,017
社区成员
发帖
与我相关
我的任务
分享CoInitialize(NULL);
try
{
_ConnectionPtr pConn("ADODB.Connection");
pConn->Open("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=lhw;Initial Catalog=CRC16;Data Source=ACER-PC;Server=localhost","lhw","lhw",adConnectUnspecified);
_RecordsetPtr pRs("ADODB.Recordset");
pRs->Open("Select * From CRC",_variant_t(pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
//////////////////////////////////////////////以上都没问题,调试发现下面报错
while (!pRs->EndOfFile)
{
r1=atoi(_bstr_t(pRs->GetCollect("POS1")));//运行到这出错,本来想用这个语句读取表中数据
r2=atoi(_bstr_t(pRs->GetCollect("POS2")));
r3=atoi(_bstr_t(pRs->GetCollect("POS3")));
pRs->AddNew();
pRs->Fields->Item["CRC"]->Value=_variant_t(long((crc16bitfor1(r1)^crc16bitfor1(r2))^crc16bitfor1(r3)));//这个语句用来添加数据
}
pRs->Close();
pConn->Close();
}
catch(_com_error&e)
{
MessageBox(e.ErrorMessage());
}


调试的时候在_variant_t var1 = pRs->GetCollect("POS1");处捕捉到错误。
[/quote]
如果是在:_variant_t var1 = pRs->GetCollect("POS1");处捕捉到错误。可能不是格式转换的错误了,是不是 上面打开数据库或者运行sql语句有问题?可以将上面两条语句分别放到try catch中,看看有没有报异常,或者open语句后,智能指针是空的,才导致下面取不到数的?MessageBox(_bstr_t(pRs->GetCollect("ID")));//ID也是整形的,能输出出来,但是现在改成上面后就不行了。
调试的时候在_variant_t var1 = pRs->GetCollect("POS1");处捕捉到错误。
调试的时候在_variant_t var1 = pRs->GetCollect("POS1");处捕捉到错误。
MessageBox(_bstr_t(pRs->GetCollect("ID")));//ID也是整形的,能输出出来,但是现在改成上面后就不行了。[/quote]
MessageBox(_bstr_t(pRs->GetCollect("ID")));//ID也是整形的,能输出出来,但是现在改成上面后就不行了。[/quote]
这样写:
_variant_t Holder;//保存记录集某项数据
Holder = pRs->GetCollect("ID")));
int Id = (int)Holder;
试下