2013-07-17 5 views
2

У меня есть Mxql-совместимый шестнадцатеричный литерал, например X'4D7953514C ' Как назначить такое значение с помощью PreparedStatments, я попробовал setString, но значение обернуто в кавычки.JDBC PreparedStatement с шестнадцатеричными литералами

Цель состоит в том, чтобы иметь SQL заявление, которое выглядит следующим образом (col1 является VARCHAR):

insert into t1 (col1) values (x'4D7953514C'); 
+0

Ну вы устанавливаете строку ... Я имею в виду, если вы вставляете шестнадцатеричную строку в строковое поле, это строка. Этот вопрос запутан, вы пытаетесь вставить строку в строку и не хотите, чтобы она была строкой? Пожалуйста, переформулируйте свой вопрос немного лучше. – Namphibian

+0

Надеюсь, теперь это яснее. – DED

ответ

1

Вы не можете установить шестнадцатеричные строки, как x'4D7953514C' непосредственно с помощью JDBC. Вам нужно либо использовать setString() с фактическим значением (MySQL), либо использовать setBytes() с байтовым массивом с нужными значениями (например, new byte[] {0x4D, 0x79, 0x53, 0x51, 0x4C }, хотя я не уверен, что это работает с MySQL Connector/J).

X'...' - синтаксис SQL-интродуктора для бинарных литералов. Когда вы используете параметризованные запросы, вы не используете литералы, вы используете параметры, поэтому синтаксис внедрения не применяется.

Смежные вопросы