2014-09-18 101 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

无关你的正/负的问题,但作为ChoChoPK指出,最好使用参数化查询,而不是字符串连接。原因如下:http://xkcd.com/327/ – 2014-09-19 07:34:20

+0

如果下面的答案之一回答你的问题,SO的工作方式,你会想要“接受”答案。详细信息:http://stackoverflow.com/help/someone-answers但只有当它真的回答。 – 2014-09-19 07:35:17

回答

4

这听起来像你可能会寻找Math.abs

返回一个int值的绝对值。如果参数不是负数,则返回参数。如果参数是否定的,则返回否定参数。

(也有版本,对于其他类型的  — longfloatdouble ...)

有一个重要的警告:

注意,如果参数等于值Integer.MIN_VALUE,最负的可表示的int值,结果是相同的值,这是负值。

+0

请给我指导我如何将它插入我的代码。 谢谢您的回答。 – 2014-09-18 22:34:00

+0

@JeezzJohn:'int cm = Math.abs(a-b);'? – 2014-09-18 22:37:56

+0

好的,谢谢你,先生 – 2014-09-18 22:42:44

0

你能用这个吗?

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

您还可以设置一个条件来检查值是否为if等语句的负数。

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

好吧,先生,我会试试这个。 – 2014-09-18 22:37:31

+1

Crowder先生提供的解决方案实施起来非常简短。你可以用它作为'value = Math.abs(value);'。要么工作。 – MarGar 2014-09-18 22:41:58

1

Math.abs像T.J.克劳德的建议,但解析输入时也做

捕捉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

好的,先生,谢谢。 – 2014-09-18 22:39:50

+0

先生我按照您的建议,但知道发生异常说:“没有指定参数1的值” String sql =“更新读取集Cubic_meter =?其中Reading_Number =?”; ps = conn。prepareStatement(SQL); ps.executeUpdate(); ps.setInt(1,cm); ps.setInt(2,v1); – 2014-09-18 22:59:53

+0

你需要把executeUpdate放在最后 – ChoChoPK 2014-09-18 23:07:53

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); 

}