Мне нужно хранить закодированный документ 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 или мне что-то не хватает в моем коде?
Благодаря
Не знаком с Sybase, но CHAR часто имеет это ограничение, попробуйте TEXT или посмотрите, существует ли BLOB, поскольку байты будут на 33% меньше. –
Я пробовал BLOB, он не работал, так как proc ожидает тип данных TEXT. Драйвер JTDS не имеет метода setText – svager
Тип данных SQL TEXT вместо CHAR. Из более ранних типов CHAR использовался для n символов в записи, а TEXT был указателем на поле MEMO. С тех пор CHAR часто ограничивается 255 в базе данных, а TEXT может содержать больше. Можно использовать setString в обоих. –