作者:-生命之水- | 来源:互联网 | 2023-05-19 07:36
我用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 个解决方案
你试试这里的数据类型
http://www.vckbase.com/document/viewdoc/?id=252
写谢谢上面各位的回复了
数据库的大文本类型真的很有意思, 我在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读写方法了
错误已经查明,是LOB格式不匹配错误,但是我明明是用UNICIDE存进去的呀
求解决方法
上面方法在更新CLOB和TEXT上没有任何错误