热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大家帮个忙,关于ADO访问ORACLE的NCLOB类型的问题

我用m_pRecordSet->Fields->Item[field]->GetChunk(lIsRead);和AppendChunk()来更新NCLOB类型,但是老报错我写的时
我用m_pRecordSet->Fields->Item[field]->GetChunk(lIsRead);和AppendChunk()来更新NCLOB类型,但是老报错
我写的时候
WCHAR buffer[] = L"ggggh";
m_pRecordSet->Fields->GetItem(field)->AppendChunk(_variant_t(buffer));
m_pRecordSet->Update();
当更新的时候就报错误,、

我读的时候
COleVariant vari_tmp;
vari_tmp = m_pRecordSet->Fields->Item[field]->GetChunk(5);
也是有错误产生,好象是关于数据转换的时候产生的,我都已经是UNICODE字符了呀~~~~~~~
求用ADO读写NCLOB的方法

7 个解决方案

#1


up learn

#2


只是更新LOB类型字段的时候才有问题的吗?

#3


你试试这里的数据类型
http://www.vckbase.com/document/viewdoc/?id=252

#4


找的什么错误啊??

#5


写谢谢上面各位的回复了
数据库的大文本类型真的很有意思, 我在SQLSERVER下建立了TEXT类型表,然后用读写TEXT(ORACLE下CLOB)的方法读写,我拷贝了一本书,没问题,我往里面放了一个MP3存的时候是按照字符串存的,读出来的时候就报错,是不是转换数据的时候的问题,因为MP3里面说白了包含一些2进制的ASCII代码嘛,但是存的时候TMD为什么不出错??
上面是问题一,关于ORACLE的NCLOB和SQLSERVER的NTEXT的存储类型是一样的,但是在更新SQLSERVER的时候NTEXT就没有什么问题,还是SQLSERVER支持用NTEXT来存储ANSI代码?我晕!
回到正题,我在更新NCLOB的时候刚开始用一般的ANSI单字节往里面存的时候
GetItem(field)->AppendChunk(_variant_t(buffer));
就出错了,我觉得是因为格式转换的原因,大家都知道ORACLE的NCHAR类型必须在写SQL语句的时候要加上一个N来表示后边是UNICODE字符集,我换成了WCHAR类型,这会在(_variant_t(buffer));
那里出的错误,RUNTIME错误,应该是类转换的时候的错误,还请教大家关于SQLSERVER和ORACLE的长文本类型的ADO读写方法了

#6


错误已经查明,是LOB格式不匹配错误,但是我明明是用UNICIDE存进去的呀
求解决方法
上面方法在更新CLOB和TEXT上没有任何错误

#7


up大家帮忙呀

推荐阅读
author-avatar
-生命之水-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有