Исключение при excuteUpdate

#java #mysql #database #jdbc

#java #mysql #База данных #jdbc

Вопрос:

Я получаю исключение как

 com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.  
  

Исключение выдается в следующей строке:

 PrepareStmt.setBinaryStream(1, new ByteArrayInputStream(data), data.length);  
updatePrepareStmt.executeUpdate();  
  

Я использую MS-SQL db. Кто-нибудь может помочь мне решить эту проблему?

Тип данных столбца, в который я пытаюсь вставить данные, является varbinary, и длина данных также невелика. Я просто вставляю «test».

Обновить
Теперь я увеличил размер переменной типа данных. Достигло 1024, но теперь я получаю новое исключение :-

com.microsoft.sqlserver.jdbc.SQLServerException: преобразование из varbinary в BLOB не поддерживается

Кто-нибудь может прокомментировать это исключение?

Комментарии:

1. При executeUpdate я получаю это исключение … Очень поэтично!

2. Каков тип данных поля, в которое вы пытаетесь вставить данные?

3. Тип данных столбца, в который я пытаюсь вставить данные, является varbinary

4. Вы вводите данные, которые не соответствуют размеру столбца. увеличьте размер столбца в базе данных или сожмите свои данные

5. О вашем обновлении, com.microsoft.sqlserver.jdbc.SQLServerException:The conversion from varbinary to BLOB is unsupported . В предыдущей версии Oracle мне приходилось запускать Insert запрос в моей таблице (который сначала создает большой двоичный объект), а затем я смог записать в него после Select

Ответ №1:

Как указано в сообщении об исключении, ваши данные кажутся больше, чем поле базы данных, в которое они должны быть записаны. Каков максимальный из data.length и какова максимальная длина вашего столбца?

Комментарии:

1. Тип данных столбца, в который я пытаюсь вставить данные, является varbinary, и длина данных также невелика. Я просто вставляю «тест»

2. Не могли бы вы показать полностью подготовленный оператор? Если может быть другой переполненный столбец.

3. частное подготовленное утверждение updatePrepareStmt; updatePrepareStmt = DBConn.getConnection().prepareStatement(ы);

Ответ №2:

Увеличьте емкость столбца.. если это так, varchar(20) сделайте это varchar(200) или что-то, что может вместить ваши данные.