Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中具有多个条件的Oracle UPDATE命令_Java_Oracle_Jdbc - Fatal编程技术网

Java中具有多个条件的Oracle UPDATE命令

Java中具有多个条件的Oracle UPDATE命令,java,oracle,jdbc,Java,Oracle,Jdbc,我对下面的Java代码有问题。它应该更新给定ID的表中的某些记录,并且STATUS列为“good”(在任何给定的时间,这只是一行)。但是,当我运行下面的代码时,它似乎忽略了和STATUS='good'部分,并在ID匹配的地方更新所有NUMRECS static void insertNumRecs() { PreparedStatement insert = null; try { String insertNumR

我对下面的Java代码有问题。它应该更新给定ID的表中的某些记录,并且
STATUS
列为“good”(在任何给定的时间,这只是一行)。但是,当我运行下面的代码时,它似乎忽略了
和STATUS='good'
部分,并在
ID
匹配的地方更新所有
NUMRECS

static void insertNumRecs()
    {
        PreparedStatement insert = null;
        try
        {
            String insertNumRecsCommand = "UPDATE FILESTATUS SET NUMRECS = ? " +
                    "WHERE ID = ? AND STATUS = 'good'";
            insert = Main.con.prepareStatement(insertNumRecsCommand);
            insert.setInt(1, Main.numRecs);
            insert.setString(2, Main.docID);
            insert.executeUpdate();
        }
        catch (Exception ex) {ex.printStackTrace();}
        finally {close(null, insert);}
    }
我试着到处找这个,但找不到任何答案。当我直接从数据库运行命令时,它工作得很好,这让我更加困惑

提前谢谢。

试着写信

"WHERE ID = ? AND STATUS = ?"
和使用

insert.setString(3, "good");

这并不能解释问题,但我想知道你为什么不这样做:

static void insertNumRecs() 
    { 
        PreparedStatement insert = null; 
        try 
        { 
            String insertNumRecsCommand = "UPDATE FILESTATUS SET NUMRECS = ? " + 
                    "WHERE ID = ? AND STATUS = ?"; 
            insert = Main.con.prepareStatement(insertNumRecsCommand); 
            insert.setInt(1, Main.numRecs); 
            insert.setString(2, Main.docID); 
            insert.setString(3, "good");
            insert.executeUpdate(); 
        } 
        catch (Exception ex) {ex.printStackTrace();} 
        finally {close(null, insert);} 
    } 
无法查看您的数据,因此我无法判断这是否是案例问题(“好”!=“好”)


确定你正在连接你认为是的数据库?如果连接字符串指向一个数据库,而您针对另一个数据库运行测试,这就解释了为什么您没有看到更改。

哦,天哪,我觉得自己很笨。我甚至没有想到这一点。很好用!然而,我有点好奇为什么我上面所做的不起作用。。。有什么想法吗?谢谢大家!@兰特默:没有主意,对不起。我现在也试过类似的方法,效果很好。只更新了匹配的行…谢谢!彼得·朗的扳机动作更快;)情况是正确的,因此我确保所有内容都小写。至于连接,其他一切都很好,所以我不知道为什么这不会=/该查询应该工作并尊重
status='good'
部分。一定有别的事情在起作用。如果您自己在另一个数据库会话中操作状态字段来测试它,您确定在测试发布的代码之前提交了更改吗?是的,我确定,因为在我提交之前程序根本无法工作(它甚至不会插入数据,更不用说更新了)。不过谢谢你的建议:)