преобразовать строку в oracle.sql.clob в Java? - PullRequest
2 голосов
/ 09 ноября 2011

Я кодирую функцию Java внутри Oracle Database, которая производит много текста!Как преобразовать строку в CLOB (oracle.sql.CLOB) в Java?Что такое простой способ сделать?

Я пытаюсь создать функцию, которая имеет String в качестве ввода с 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;
  }

Ответы [ 3 ]

2 голосов
/ 10 декабря 2012
/*********************************************************************************************
 * 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;
    }
}
0 голосов
/ 09 февраля 2015

Вы можете использовать NonContextualLobCreator из Hibernate. Пожалуйста, смотрите ответы в Что является альтернативой для устаревшего Hibernate.createClob (Reader reader, int length)

0 голосов
/ 09 ноября 2011

Примерно так:

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();
...