Java中具有多个条件的Oracle UPDATE命令
我对下面的Java代码有问题。它应该更新给定ID的表中的某些记录,并且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
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'
部分。一定有别的事情在起作用。如果您自己在另一个数据库会话中操作状态字段来测试它,您确定在测试发布的代码之前提交了更改吗?是的,我确定,因为在我提交之前程序根本无法工作(它甚至不会插入数据,更不用说更新了)。不过谢谢你的建议:)