加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ADO Idispatch #3105 error 的原因和解决

(2014-06-23 15:34:49)

今天调试爬虫程序,遇到了Idispatch #3105 error 错误,折腾半天找不到原因,最后才发现原来高老师给我的数据库的字段类型是错误的,晕死。。。

字段类型应该是ntext,不知道怎么给我的变成了nvarchar 类型长度为(1) ,我提交了个很大的摘要字符串

调试过程中查看到如下帮助,比较有用,原贴如下:

[http://hezhenwei.spaces.live.com/blog/cns!C5E95043D17A1B62!750.entry]

ADO Idispatch #3105 error 的原因和解决 这两天在玩ado的时候,使用RecordSet对于特定的字段更新总是出现 idispatch #3105 error. 在网上搜索资料也搜索不到。于是自己尝试,发现原因是这样的:
 在数据库中有些字段是字符串类型,允许为NULL,但是长度不允许为空.如果当数据为NULL的时候读取了数据,但是未经处理又需要插入的时候,可能会变成长度为空的字符串,这时进行插入或者更新时就会报#3105错误.
 解决办法:声明_variant_t 类型,将其类型值设为 VT_NULL,然后用PutCollect放到RecordSet 里面就好了:
 _variant_t myValue;
 myValue.vt = VT_NULL;
 m_pRecordset->PutCollect("FieldName1&q
更多来源:http://www.jiejuchina.com
uot;,myValue);
 m_pRecordset->Update();

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有