如何分配空值到一个字符串,然后将其插入到mysql数据库

问题描述:

这里我计算一列的平均值 如果平均值为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"); 

    } 

您没有引号之间围ans处理NULL情况。
否则,你确实插入"NULL"String

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

你可以试试:

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

谢谢! !这工作:) –

+0

不客气:) – davidxxx

你的代码是非常不理想的,因为你甚至不使用PreparedStatement。由于您的查询包含''标记,因此它将始终在数据库中插入一个字符串。在null的情况下,您只需插入'null',这不是您想要的。

现在,这不是一个好的解决方案,但它对你来说是最快的。修改查询以"INSERT INTO chk(id) VALUES ("+ans+")",以及执行查询之前添加如下内容:

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

记住,这是不好的代码。这不是标准的方式。它有安全问题。学习使用PreparedStatement

您可以使用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? –