Ответ 1
Ответ (ДА, вы должны использовать VARCHAR) можно найти здесь:
http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (обновленная устаревшая неработающая ссылка)
и вот некоторая информация о типе MYSQL TEXT
При использовании метода PreparedStatement
setObject
для столбца типа TEXT (в БД MySQL), каков должен быть последний параметр?
Например, я знаю, что это нормально для столбца VARCHAR:
stmt.setObject(i, "bla", Types.VARCHAR);
где stmt
- PreparedStatement
, а Types
- java.sql.Types
.
Но если тип столбца DB - TEXT, должен ли я использовать VARCHAR? или BLOB, или CLOB?
Ответ (ДА, вы должны использовать VARCHAR) можно найти здесь:
http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (обновленная устаревшая неработающая ссылка)
и вот некоторая информация о типе MYSQL TEXT
Почему вы не используете
stmt.setString ?
для текстового типа? http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html#setString(int, java.lang.String)
Здесь нет поля TEXT Oracle Doc для типов sql, но может появиться в будущем (теперь вы можете использовать информацию, которая размер - 21845 как трюк с жесткой настройкой реализации - если вам нужно знать позже, что это поле TEXT - фактический размер поля - это то, что вы выбираете, а остальная часть текста запоминается в другом месте MySql)
Итак, первый ответ с "use VARCHAR as type" работает (возможно, библиотека вызывает вызов setString)
Ответ "setString" также работает (которому предшествует переключатель (field_type), если вы хотите сами принять решения - я использую эту опцию для более легкого отладки кода - скорость такая же, как и стоимость = переключатель + setString в обоих случаях)
Спасибо всем за ссылки и подтверждения!