我正在创建一个 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){}
你应该避免这种方式,因为很有可能出现空指针异常。
在我看来,更好的方法是测试结果集的大小是否为零或结果集本身的值 NULL。
如果 UPDATE 语句也不会被执行,请直接使用数据库引擎(Ms Access、SQL Server 等)检查 SELECT 语句。优点是您可以排除 SELECT 查询中的错误。
关于java - MS使用java Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836147/