Как и в заголовке: я был отладчиком моего приложения, и поэтому в строке, где я помещал строки в переменную PreparedStatement, специальные символы меняются на «?». На самом деле я не знаю, где искать вещи, которые должны отремонтировать его, так что я не знаю, если требуется код .. Во всяком случае, я помещу некоторые здесь:Java PreparedStatement setString изменяет символы
PreparedStatement stm = null;
String sql = "";
try{
sql = "INSERT INTO methods (name, description) VALUES (?, ?)";
stm = connection.prepareStatement(sql);
stm.setString(1, method.getName());
stm.setString(2, method.getDescription());
//...
}catch(Exception e){}
при отладке «имя» поля был прав в объекте метода, но после добавления его в переменную stm он изменил символы на «?».
Я нашел одну тему о подобном sitoatuin на SO, но не было никакого ответа, который мог бы мне помочь, так как я точно знаю, что есть что-то не так, чтобы добавить строку в оператор, а не в базу данных. Но я не знаю, что ..
Любые претензии?
PS. Я использую netbeans версии 6.7.1
EDIT: Я отлаживал стандартный отладчик netbeans и проверял состояние переменных перед добавлением строк в переменную stm. Я даже менял метод getName() на статическую строку со специальными символами. Так что, конечно, все в порядке с классом Method.
EDIT2: Я сделал еще одно испытание. Проверенная переменная stm и одно из ее свойств - «charEncoding», которое установлено на «cp1252». Итак, главный вопрос: как это изменить?
Как ты проверить это? Какой инструмент вы использовали для проверки данных в базе данных? – skaffman
Вы говорите, что возвращаемое значение 'method.getName()' изменилось после его вызова? –
* Никогда * do 'catch (Exception e) {}' - если произойдет исключение, вы не узнаете, что это произошло и что пошло не так. По крайней мере, напечатайте трассировку стека: 'catch (Exception e) {e.printStackTrace(); } ' – Jesper