[cpp]
<strong>c++ 讀寫Clob對象,注意數據編碼長度
</strong>
讀
//p_rs 為resultset
if (p_rs->next())
{
Clob clob = p_rs->getClob(4);
if (!clob.isNull())
{
//clob.setCharSetForm(OCCI_SQLCS_IMPLICIT); //本地編碼格式,貌似有問題
clob.setCharSetId("UTF8"); //數據庫是utf-8存儲的
unsigned int cloblen = clob.length();
if (cloblen > 0)
{
clob.open(OCCI_LOB_READONLY);
//utf-8必須乘以3,不然只能取實際數據的1/3
clob.read(cloblen * 3, (unsigned char*)msg_content, cloblen * 3, 1);
clob.close();
}
}
}
寫
就當是varchar來寫,沒有問題。普通的sql支持。
不過sql語句在oracle裡面是有長度限制的,所以當數據特別長的時候,可能要考慮使用Clob加write方法來搞定。
作者:RunBoying