#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)
или что-то, что может вместить ваши данные.