2015-05-15 2 views
2

Ниже мой столCLOB в оракула не позволяет вставлять данные более 4000 символов

create table MY_LOG(SQNO NUMBER, CLOB_FLD CLOB); 

Ниже моя вставка заявление выполнена из стороны Java

stmt.execute(new StringBuilder(
       "INSERT INTO MY_LOG VALUES ('").append(logMessage.getNo()).append("','").append(logMessage.getStackTrace()).append("')")); 

StackTrace слишком велик, то есть больше, чем 4000 символов. Таким образом, ее метание

SQL Error: ORA-01704: string literal too long 
01704. 00000 - "string literal too long" 
*Cause: The string literal is longer than 4000 characters. 
*Action: Use a string literal of at most 4000 characters. 
      Longer values may only be entered using bind variables. 

Есть ли функция или процедура встроенной или есть что-то я могу сделать, чтобы сделать эту работу должным образом ??

Заранее спасибо ..

ответ

2

Использование PreparedStatement, создать CLOB с Connection.createCLob, положить текст в CLOB с CLob.setString, установленным параметром PreparedStatement с PreparedStatement.setCLob

+0

Пробовал создавать connection.createClob (). Выброс исключений. Вызвано: java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.createClob() Ljava/sql/Clob; –

+1

Вам нужно ojdbc6.jar, createClob с тех пор 1.6 –

+0

См. Учебник: http://tutorials.jenkov.com/jdbc/preparedstatement.html – loopasam

Смежные вопросы