更新值为null的查询,不返回结果

时间:2019-04-17 16:12:31

标签: java mysql sql

我正在研究一个小的Java Crud API,该API在MySql数据库上执行Crud操作。一切正常,除非我尝试更新字段为空的表。

该表有4个字段:第一个(id_tess_fk)和第二个(tag_fk)是两个外键,第三个(data_start)被设置为默认当前时间戳,第四个(data_end)也是一个日期,创建行时该日期为null,并且在输入后将更新为实际日期。

我尝试使用IS NULL语法和=null,但是我总是得到相同的空结果。如果我在where条件中省略了此查询,查询将返回一些内容,但这并不是我真正需要的,因为我只需要更新满足条件的行即可。

我在做什么错了?

case "/nol": stmt = conn.prepareStatement("SELECT data_start FROM noleggi WHERE id_tess_fk=? AND tag_fk=? AND data_end IS null ;");
                    stmt.setString(1,id_tess);
                    stmt.setString(2,tag);


                    ResultSet rs = stmt.executeQuery();

                    //while(rs.next())
                    //{

                        java.util.Date data_start = rs.getDate("data_start");



                        int sec_used = Math.toIntExact((data_start.getTime() - data_end.getTime()) / 1000);

                        stmt = conn.prepareStatement("SELECT sec_cred FROM utenti WHERE id_tess=?;");
                        stmt.setString(1, id_tess);

                        rs = stmt.executeQuery();
                        sec_cred = rs.getInt("sec_cred");


                        sec_cred -= sec_used;


                        stmt = conn.prepareStatement("UPDATE `utenti` SET `sec_cred`=? WHERE `id_tess_fk`=?;");
                        stmt.setInt(1, sec_cred);
                        stmt.setString(2, id_tess);
                        stmt.executeUpdate();

                        java.sql.Timestamp timestamp_data_end = new Timestamp(System.currentTimeMillis());

                        stmt = conn.prepareStatement("UPDATE noleggi SET data_end=? WHERE id_tess_fk=? AND tag_fk=? AND data_end=?;");
                        stmt.setTimestamp(1, timestamp_data_end);
                        stmt.setString(2, id_tess);
                        stmt.setString(3, tag);
                        //stmt.setNull(4,Types.NULL);
                        value = stmt.executeUpdate();

                        if (value != 0)
                        {
                            jsonObject.put("response_code", 201);
                            jsonArray.put(jsonObject);

                        } else
                        {
                            jsonObject.put("response_code", 400);
                            jsonArray.put(jsonObject);
                        }

                        response.getWriter().println(jsonArray);

                    //}
                    stmt.close();
                    conn.close();
                    break;`

0 个答案:

没有答案