2014-09-18 4 views
-2
String v1 = lbl_READING_NUMBER.getText(); 


int a = Integer.parseInt(jLabel_PREVIOUS_READ.getText()); 

int b = Integer.parseInt(jLabel_PRESENT_READ.getText()); 

int cm = a-b; 

try{ 

    String sql = "UPDATE reading SET Cubic_meter=' "+cm+" ' WHERE Reading_Number=' "+v1+"' "; 

    ps = conn.prepareStatement(sql); 

    rs=ps.executeUpdate(); 
} 
catch(Exception e){ 

    JOptionPane.showMessageDialog(null, e); 

} 

Этого кода отображение отрицательного Cubic_meter столбец в моей базе данных, хочет иметь положительный Cubic_meter даже если jLabel_PREVIOUS_READ.getText() это меньше, чем jLabel_PRESENT_READ.getText().Как преобразовать отрицательное число в положительную

+0

Unrelated к вашему положительному/отрицательному вопрос, а как ChoChoPK указывает, что лучше использовать параметризованные запросы, а не конкатенации строк. Вот почему: http://xkcd.com/327/ –

+0

Если один из ответов ниже отвечает на ваш вопрос, как работает SO, вы захотите «принять» ответ. Подробности: http://stackoverflow.com/help/someone-answers Но только если на это действительно ответил. –

ответ

4

Это звучит, как вы могли бы искать Math.abs:

Возвращает абсолютное значение целочисленного значения. Если аргумент не отрицателен, аргумент возвращается. Если аргумент отрицательный, возвращается отрицание аргумента.

(Есть также версии для других типов   — long, float, double ...)

Там есть важное предостережение:

Заметим, что если аргумент равен значению из Integer.MIN_VALUE, самое отрицательное представимое значение int, результатом является то же значение, которое отрицательно.

+0

, пожалуйста, дайте мне руководство по тому, как я буду вставлять это в свой код. Спасибо за ответ, кстати. –

+0

@JhaezzJohn: 'int cm = Math.abs (a-b);'? –

+0

ОК спасибо, сэр –

0

Вы можете использовать это?

value=value*-1; //simply multiply by -1. 

Вы также можете установить условие, чтобы проверить, является ли значение отрицательным с помощью оператора if.

if(value<0) 
    value=value*-1; //simply multiply by -1. 
+0

ОК, я попробую это. –

+1

Решение, предлагаемое г-ном Броудером, велико и короче для реализации. Вы можете использовать его как 'value = Math.abs (value);'. Либо это сработает. – MarGar

1

Do Math.abs like T.J. Crowder предложил, но и сделать

поймать NumberFormatException при разборе ввода

Изменения SQL заявления для использования связанных переменных, как этого

String sql = "UPDATE reading SET Cubic_meter=? WHERE Reading_Number= ?"; 
    ps = conn.prepareStatement(sql); 
    ps.setInt(1, cm); // assuming always positive 
    ps.setInt(2, v1); 

http://en.wikipedia.org/wiki/Prepared_statement

Используя связанные переменный является хорошей практикой для защиты от SQL-инъекций.

+0

ОК, сэр, спасибо. –

+0

сэр Я следую вашему предложению, но знаю, что возникло исключение, говоря: «Нет значения, указанного для параметра 1» Строка sql = «Обновить набор для чтения Cubic_meter =? Where Reading_Number =?"; ps = conn.prepareStatement (SQL); ps.executeUpdate(); ps.setInt (1, см); ps.setInt (2, v1); –

+0

Вам нужно поставить executeUpdate last – ChoChoPK

0

Попробуйте это:

int cm = a-b; 
int cm2 = cm*(-1); 

try{ 

    String sql = "UPDATE reading SET Cubic_meter=' "+cm2+" ' WHERE Reading_Number=' "+v1+"' "; 

    ps = conn.prepareStatement(sql); 

    rs=ps.executeUpdate(); 
} 
catch(Exception e){ 

    JOptionPane.showMessageDialog(null, e); 

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