vs报错 "多步操作产生错误。请检查每一步的状态值"

在开发插件图表控件时,遇到数据库更新错误。通过排查发现为字段长度溢出导致,提醒开发者在进行数据库写操作时,需确保数据类型与长度匹配。

今天在开发一个插件图表控件,在实例化后向数据库Update时候,报出此错误,刚开始以为是我用的异步方法,在调用程序的句柄的时候的线程问题,索性改成了同步方法,仍然报出此错误。后来Debug和排错,定位到是数据库的问题,经过检查某字段长度溢出

如出现此错误,并且有数据库写操作,请仔细检查数据库类型和长度与写入的数据是否匹配。

转载于:https://www.cnblogs.com/qwqwQAQ/p/11599777.html

_RecordsetPtr* pRecordset = new _RecordsetPtr; pRecordset->CreateInstance(__uuidof(Recordset)); (*pRecordset)->CursorLocation = adUseClient; (*pRecordset)->Open(_bstr_t("select CAST(0.0 AS FLOAT) as jjje, jkje from table1"), (*m_pConnect).GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); (*pRecordsetTbkk)->PutCollect(_variant_t("jkje"), _variant_t(double(0.0))); // 正常 (*pRecordsetTbkk)->PutCollect(_variant_t("jjje"), _variant_t(double(1.1))); // 报错 "多步操作产生错误检查每一步状态值。" // 检查字段类型 long jjjeType = (*pRecordsetTbkk)->Fields->Item["jjje"]->Type; // 写入数据 if (jjjeType == adDecimal || jjjeType == adNumeric) { DECIMAL decVal; VarDecFromR8(1.1, &decVal); (*pRecordsetTbkk)->PutCollect(_variant_t("jjje"), _variant_t(decVal)); // 报错 "多步操作产生错误检查每一步状态值。" } else { (*pRecordsetTbkk)->Fields->GetItem("jjje")->PutValue(_variant_t(1.1)); // 报错 "多步操作产生错误检查每一步状态值。" (*pRecordsetTbkk)->Fields->Item["jjje"]->Value = vtMissing; // 报错 "多步操作产生错误检查每一步状态值。" (*pRecordsetTbkk)->Fields->Item["jjje"]->Value = _variant_t(1.1); // 报错 "多步操作产生错误检查每一步状态值。" (*pRecordsetTbkk)->PutCollect(_variant_t("jjje"), _variant_t(double(1.1))); 报错 // "多步操作产生错误检查每一步状态值。" } 要求,根据错误提示,改正。本功能仅仅取记录集在本地做修改临时使用,不将修改结果提交至数据库。原因会不会是因为字段本身不存在数据库表中,导致只能读不能改写。有什么解决方案
最新发布
08-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值