我正在创建一个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查询中排除错误。