2011-11-09 27 views
2

我在Oracle数据库内部编写了一个Java函数,它可以产生文本的分配! 如何在java中将字符串转换为CLOB(oracle.sql.CLOB)? 什么是直截了当的做法?在java中将字符串转换为oracle.sql.clob?

我试图建立具有字符串oracle.sql.CLOB作为输出输入的功能,但它不工作!我没有做任何jdbc相关工作!

这里是我有什么

public static CLOB str2clob(String s) 
    { 
     oracle.sql.CLOB clob = null; 

     try 
     { 
       clob.setString(0,s); 

     } catch (Exception e) 
     { 
     } 
     return clob; 
    } 
+4

入住这里请: http://stackoverflow.com/questions/4687696/string-to-clob-in-java – Mechkov

+1

或者[这里](http://stackoverflow.com/questions/5454830 /转换-java的字符串到CLOB)。 –

+0

这两个链接并不直接提供海报要求的内容... – Barett

回答

0

像这样的东西(这是不工作!):

oracle.sql.CLOB **clob** = ((OracleResultSet)rset).getCLOB(index); 

StreamReader sr = new StreamReader(**yourString**); 
char[] bufr = new char[clob.getChunkSize()]; 


OutputStream os = new OutputStream(clob.getOutputStream()); 

int charsRead = 0; 
for(charsRead = sr.read(bufr); charsRead>-1; charsRead = sr.read(bufr)){ 
    os.write(bufr, 0, charsRead); 
} 


os.flush(); 
os.close() 
sr.close(); 
+0

因此,我的结果在** clob **中另存为CLOB? –

+0

'oracle.sql.CLOB clob =((OracleResultSet)rset).getCLOB(** index **);'? –

+0

您在clob(clob.getOutputStream())的outputStream中写入“yourString”(使用StreamReader sr) –

2
/********************************************************************************************* 
* From String to CLOB 
* @return CLOB representation of string 
*********************************************************************************************/ 
private java.sql.Clob stringToClob(String source) 
{ 
    try 
    { 
     return new javax.sql.rowset.serial.SerialClob(source.toCharArray()); 
    } 
    catch (Exception e) 
    { 
     log.error("Could not convert string to a CLOB",e); 
     return null; 
    } 
} 
+1

请给一些描述,它会更好.... –

+0

**这是可能的,但创建Clob不能正常工作!** 例如,调用'yourClob.getAsciiStream()'抛出SerialException:'不支持的操作。除非使用完全实现的Clob对象实例化,否则SerialClob无法将CLOB值作为ASCII流返回。有关更多详细信息,请参阅SerialClob实现。 –