如何分配空值到一个字符串,然后将其插入到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 +")";
你的代码是非常不理想的,因为你甚至不使用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");
//-----------^^-----------------
}
我同意,但在这里我需要字符串变量中的所有值首先。我会在稍后使用准备好的语句。 –
那么有没有办法将NULL分配给变量字符串ans? –
@SnehaP什么目的在你的id中使用null? –
谢谢! !这工作:) –
不客气:) – davidxxx