这里我计算的是一列的平均值
如果 avg 变为 0.0,那么我想将字符串变量分配为 NULL
,否则为 avg 值本身。
这些值被存储在 mysql 数据库中 现在我的问题是,当 avg 确实达到 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");
}
最佳答案
您可以使用 setNull()
并避免任何语法错误或 SQL 注入(inject),您必须改用 PreparedStatement :
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");
//-----------^^-----------------
}
关于java - 如何将NULL值赋给一个字符串,然后将它插入到mysql数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43424850/