java - MS使用java Access 数据库

标签 java sql ms-access

我正在创建一个 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/

相关文章:

java - 如何在Jubula或RCP测试工具中注入(inject)参数?

java - MQJE018 : Protocol error - unexpected segment type received

python - Django/SQL : keeping track of who who read what in a forum

java - 通过 JDBC Access Access(使用 ODBC?)

java - 向异常添加信息

java - 如何在 Java 中使用 Json 映射创建 SQL 日期?

mysql - GROUP BY 子句但在列中具有连续(线性)值

mysql - 用于检测不变值的高级 SQL 语句 - MySQL

ms-access - Dapper 和 System.Data.OleDb DbType.Date 抛出 'OleDbException : Data type mismatch in criteria expression'

ms-access - 无法同时打开超过一毫秒的 access 2013 数据库