2016-12-21 6 views
0

Так что я звоню метод вставки в качестве такогоВставьте в базу данных из Java показывает, как десятичное значение, а не полукокса

insert(updateSql.toString(), parameters); 

Одним из параметров имеет тип CHAR (или «L» или «R ') Когда я перехожу к тому, что вставлено в базу данных, оно показывает эквивалентное значащее значение ascii L, равное 76. Когда я его отлаживаю, он также передается как L в java, так что это что-то с вставкой его в SQL. Столбец имеет тип varchar, поэтому я не уверен, что нужно вставить фактическое значение char ascii вместо десятичного значения ascii, как это делается в настоящее время. Это оракул кстати.

Это метод:

public void insertIntoTable(char leftRight<---- This one, 
      String ID, 
      Number number, 

      ){ 

     StringBuffer updateSql = new StringBuffer().append("  UPDATE table ") 
      .append("  SET column_name = ? ")   
      .append("  WHERE  ID = ? ") 
      .append("  AND  Number = ? "); 




ParameterHolder parameters = new ParameterHolder(); 
parameters.addParameter(leftRight); <---- This one 
parameters.addParameter(id); 
parameters.addParameter(number); 

insert(updateSql.toString(), parameters); 

ценится Любая информация. Спасибо.

+0

Можете ли вы поделиться SQL и содержимым 'parameters'? – Mureinik

+0

можете ли вы добавить весь код функции? – Dexters

+0

Добавлен метод, переменные изменены для обеспечения безопасности. – user2023608

ответ

0

Почему бы не использовать простой подготовленный отчет? Это первые пары это символ, так что используйте SetString()

PreparedStatement preparedStatement = dbConnection.prepareStatement(updateSql.toString()); 
preparedStatement.setString(1, leftRight); // use setString for char types 
preparedStatement.setString(2, id); 
preparedStatement.seInt(3, number); 

preparedStatement .executeUpdate(); 
0

примитивных значения символьных (например, «L» или «R») фактически считаются Java-целочисленных типами. Вы можете сделать char c ='R' + 5, чтобы получить «W». Это также означает, что вы можете сделать int i = 'R' и получить 82. Не зная, что происходит внутри вашего insert() Я не могу быть уверен, но я уверен, что где-то по пути происходит преобразование char-to-int. Не зная, что такое ParameterHolder, я бы поспорил, что это звонок parameters.addParameter(leftRight). Я подозреваю, что вы на самом деле звоните addParameter(int), потому что нет addParameter(char) или insert() делает эквивалент preparedStatement.setInt(c) вместо preparedStatement.setString(String.valueOf(c)).