2017-04-15 18 views
2

這裏我計算一列的平均值 如果平均值爲0.0,那麼我想分配字符串變量爲NULL否則平均價值本身。如何分配空值到一個字符串,然後將其插入到mysql數據庫

這些值存儲在mysql db 現在我的問題是,當平均確實來0.0時,字符串NULL被存儲,但我想要默認的NULL值存儲在它。

如何分配NULL(而不是字符串NULL)到變量ans?

private void btnAdd1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    Connection conn = null; 
      Statement st = null;   
      ResultSet rs = null; 

     try{ 

    conn = DriverManager.getConnection("jdbc:mysql://localhost/check","root",""); 
    st = conn.createStatement(); 

    String sql4 =("SELECT AVG(unit4) as num FROM lo where unit4 IS NOT NULL"); 
     PreparedStatement pstmt3 = conn.prepareStatement(sql4); 
     ResultSet rs4 = pstmt3.executeQuery(); 
    rs4.next(); 
    double a3 = rs4.getDouble("num"); 
    double b3 = Math.round(a3*10); 
    double res5 = b3/10; 
    rs4.next(); 
    avg1.setText(String.valueOf(res5)); 
    String a1 =avg1.getText(); 
    String ans ; 

    if(a1.equals("0.0")){ 
     ans = null; 
    }else{ 
     ans = a1; 
    } 

    String query = "INSERT INTO chk(id) VALUES ('"+ans+"')"; 
    executeSQlQuery(query, "Inserted"); 

    } 

回答

0

您沒有引號之間圍ans處理NULL情況。
否則,你確實插入"NULL"String

String query = "INSERT INTO chk(id) VALUES ('"+ans+"')"; 

你可以試試:

String query = "INSERT INTO chk(id) VALUES ("+ ans +")"; 
+0

謝謝! !這工作:) –

+0

不客氣:) – davidxxx

0

你的代碼是非常不理想的,因爲你甚至不使用PreparedStatement。由於您的查詢包含''標記,因此它將始終在數據庫中插入一個字符串。在null的情況下,您只需插入'null',這不是您想要的。

現在,這不是一個好的解決方案,但它對你來說是最快的。修改查詢以"INSERT INTO chk(id) VALUES ("+ans+")",以及執行查詢之前添加如下內容:

if(ans != null) 
    ans = "'" + ans + "'"; 

記住,這是不好的代碼。這不是標準的方式。它有安全問題。學習使用PreparedStatement

0

您可以使用setNull(),避免你在使用PreparedStatement代替任何語法錯誤或SQL注入:

PreparedStatement ps = connection.prepareStatement("INSERT INTO chk(id) VALUES (?)"); 
ps.setNull(1, java.sql.Types.VARCHAR); 
ps.executeUpdate(); 

注意

的東西在你的程序有線,爲什麼要使用rs4.next();什麼如果你的結果是空的,我認爲你需要這樣的東西,而不是:

if (rs4.next()) {//<<<-------------------- 
    double a3 = rs4.getDouble("num"); 
    //-----------^^----------------- 
} 
+0

我同意,但在這裏我需要字符串變量中的所有值首先。我會在稍後使用準備好的語句。 –

+0

那麼有沒有辦法將NULL分配給變量字符串ans? –

+0

@SnehaP什麼目的在你的id中使用null? –

相關問題