我正在创建一个Java程序,通过它我可以将其编辑到Microsoft Access数据库中。我有一个特定的情况,我需要搜索表中是否已经存在某个记录,如果存在,我想对其进行更新,如果不存在,我想从头开始创建它。

我发现了这段代码:

IF EXISTS (SELECT * FROM USERS WHERE USERID=@UID) select 1 else select


这段代码给我一个错误,说应该是SELECT,UPDATE或DELETE语句。

在我自己尝试过的代码中,我完成了以下操作:

try{
            s = con.createStatement();
            s.executeQuery("SELECT * FROM table WHERE date='" + today + "'");
            rset = s.getResultSet();

            if (rset.getString("date") == null){

                s = con.createStatement();
                s.executeUpdate("INSERT INTO table VALUES ('" + today + "','" + cflow + "','" + vat + "','" + cnn + "')");

            }
        }

        catch (SQLException exp)
        {
            System.err.println(exp);
        }


但是使用此代码,当记录尚不存在时,不会在数据库内部更新用户输入。

谢谢你的时间 :)

最佳答案

第一:如果我没记错的话,那就是

IF EXISTS (SELECT * FROM USERS WHERE USERID=@UID) select 1 else select


不完整的事务sql语句-由sql引擎从数据库系统使用。

第二名:

if (rset.getString("date") == null){}


您应该避免这种方式,因为有很大的机会获取Nullpointer异常。

在我眼中,更好的方法是测试结果集的大小是否为零,或者测试结果集本身是否为NULL。

如果也不会执行UPDATE语句,请直接使用数据库引擎-Ms Access,SQL Server等-检查您的SELECT语句。好处是您可以在SELECT查询中排除错误。

09-10 07:17
查看更多