2013-04-13 4 views
0
String xmlSt = '<?xml version="1.0" encoding="utf-16"?><form><control><type>SINGLE</type><row><column><level>1</maxoccurs><minlength>1</minlength><maxlength>250</maxlength&gt'; 

String query = "insert into daily_diary(xml_val) values('"+ xmlSt + "'"); 
int result = entityManager.createNativeQuery(query).executeUpdate(); 

но он бросает, как следующее:вставки UTF-8 строку в БД

SQL Error: 0, SQLState: null 
11:45:04,175 ERROR [JDBCExceptionReporter] The value is not set for the parameter number 1. 

Он бросает ошибку, когда мы я передать длинное строковое значение еще он успешно вставлен. Нужно решение для вставки длинных utf-8 string in db.

+0

увеличить длину столбца до max –

ответ

0

Это звучит так, как будто вы просто пытаетесь вставить строку, длина которой больше длины столбца. Увеличьте длину столбца, если сможете. Если вы не можете, вам может потребоваться переключиться на другой тип столбца.

(Это не похоже на UTF-8, хотя если у вас есть строка, в которой символы закодированы в несколько байтов, вы можете обнаружить, что в базе данных было больше «символов» (фактически байт), хранящихся в базе данных столбец чем были символы в исходной строке.)


Я хотел бы отметить несколько других вещей ... которые могут иметь отношение к вашей проблеме.

  1. Ваш код недействителен Java. В «строковом» литерале используются одинарные кавычки ... и компилятор откажется от этого.

  2. Если фактическая строка содержит символы одиночной кавычки или (потенциально) другие вещи, запрос, который вы генерируете путем избиения строк, может быть синтаксически недействительным SQL. (Или, что еще хуже, это может быть справедливо, но означать что-то совершенно неожиданное. Подумайте, SQL-инъекция !!!). Вам будет рекомендовано использовать PreparedStatement с параметром '?' заполнитель в запросе, а затем добавьте строку в качестве параметра запроса. Это позаботится обо всех SQL-экранах для вас (и защитит от SQL-инъекции ...).

  3. Вам не нужно использовать объекты HTML/XML в строке, хранящейся в базе данных SQL ... если специально для этого не требуется дизайн приложения.

+0

Привет, я использовал PreparedStatement с '?' заполнитель в запросе. его успешно вставлено. Спасибо. – Karthi

+0

Хорошо ... вы на самом деле решили две проблемы. –

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