2014-09-18 96 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); 

}