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列,即使jLabel_PREVIOUS_READ.getText()
小于jLabel_PRESENT_READ.getText()
,也希望拥有正Cubic_meter。
答案 0 :(得分:4)
听起来你可能正在寻找Math.abs
:
返回int值的绝对值。如果参数不是负数,则返回参数。如果参数为负数,则返回参数的否定。
(还有其他类型的版本 - long
,float
,double
...)
有一个重要的警告:
请注意,如果参数等于
Integer.MIN_VALUE
的值,即最负的可表示的int值,则结果是相同的值,即负值。
答案 1 :(得分:1)
像T.J.这样的Math.abs。克劳德建议,但也做
解析输入时捕获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注入的好习惯。
答案 2 :(得分:0)
你能用吗?
value=value*-1; //simply multiply by -1.
您还可以使用if语句(例如。
)设置条件以检查值是否为负数 if(value<0)
value=value*-1; //simply multiply by -1.
答案 3 :(得分: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);
}