Что такое эквивалент java.sql.Types для MySQL TEXT? - PullRequest
12 голосов
/ 21 июля 2011

При использовании метода PreparedStatement setObject для столбца типа TEXT (в БД MySQL), каким должен быть последний параметр?

Например, я знаю, что это нормально для столбца VARCHAR:

stmt.setObject(i, "bla", Types.VARCHAR);

, где stmt - это PreparedStatement, а Types - это java.sql.Types.

Но если тип столбца БД - TEXT, мне все равно использовать VARCHAR? или, может быть, BLOB или CLOB?

Ответы [ 3 ]

9 голосов
/ 21 июля 2011

Ответ (ДА, вы должны использовать VARCHAR) можно найти здесь:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (обновлена ​​устаревшая неработающая ссылка)

и немного информации о типе MYSQL TEXT

http://dev.mysql.com/doc/refman/5.0/en/blob.html

1 голос
/ 21 июля 2011

Почему вы не используете

stmt.setString ?

для типа текста? http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html#setString(int, java.lang.String)

0 голосов
/ 23 мая 2017

Здесь нет поля TEXT Oracle Doc для sql Types , но оно может появиться в будущем (теперь вы можете использовать информацию о размере 21845 в качестве хитрого кода реализации - если вам нужно знатьпозже, что это поле TEXT - фактический размер поля - это то, что вы выбираете, а остальная часть текста запоминается в другом месте MySql)

Так что первый ответ с «использовать VARCHAR как тип» работает (вероятно, библиотекасделать вызов setString)

Ответ «setString» также работает (ему предшествует переключатель (field_type), если вы хотите принять решение самостоятельно - я использую эту опцию для упрощения отладки кода -скорость равна стоимости = switch + setString в обоих случаях)

Спасибо всем за ссылки и подтверждения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...