2016-08-11 4 views
0

Мне нужно хранить закодированный документ base64 в базе данных Sybase с помощью хранимой процедуры. Я использую драйвер JTDS.Хранить base64 закодированный PDF-документ в Sybase

До тех пор, пока я не пытаюсь сохранить документ в формате PDF, все в порядке. Однако, как только я попытаюсь запустить закодированную строку. Я получаю следующую ошибку

java.sql.SQLException: Sybase не поддерживает полукокса параметры> 255 байт.

Вот код

conn.setAutoCommit(false); 

cs = conn.prepareCall("{call sp_save_pdf (?,?,?,?)}"); 
cs.setString(++i, id); 
cs.setString(++i, source); 
cs.setString(++i, base64EncodedDocument); 
cs.registerOutParameter(++i, java.sql.Types.INTEGER); 
cs.execute(); 

Когда Sybase Разработчики выполнить эту процедуру, но они используют драйвер JConnect. Вот мой вопрос: драйвер JTDS не поддерживает использование длинных строк, и мне нужно использовать JConnect или мне что-то не хватает в моем коде?

Благодаря

+0

Не знаком с Sybase, но CHAR часто имеет это ограничение, попробуйте TEXT или посмотрите, существует ли BLOB, поскольку байты будут на 33% меньше. –

+0

Я пробовал BLOB, он не работал, так как proc ожидает тип данных TEXT. Драйвер JTDS не имеет метода setText – svager

+0

Тип данных SQL TEXT вместо CHAR. Из более ранних типов CHAR использовался для n символов в записи, а TEXT был указателем на поле MEMO. С тех пор CHAR часто ограничивается 255 в базе данных, а TEXT может содержать больше. Можно использовать setString в обоих. –

ответ

0

выпуск был с водителем JTDS как только я перешел на JConnect водитель все начинает работать, как ожидалось.

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