Команда Oracle UPDATE с несколькими условиями в Java - PullRequest
2 голосов
/ 19 февраля 2010

У меня проблемы с кодом Java ниже.Предполагается обновить определенные записи в таблице, где указан идентификатор и где столбец STATUS является «хорошим» (это только одна строка в любой момент времени).Однако, когда я запускаю приведенный ниже код, кажется, что он игнорирует часть AND STATUS = 'good' и обновляет все NUMRECS везде, где совпадает ID.

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);}
    }

Я пытался искать это везде, но я не смог найти никаких ответов.Когда я запускаю команду прямо из базы данных, она отлично работает, что еще больше смущает меня.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2010

Это не объясняет проблему, но я удивляюсь, почему вы этого не делаете:

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);} 
    } 

Не могу видеть ваши данные, поэтому я не могу сказать, является ли это проблемой ("ХОРОШО"! = "Хорошо")

Вы уверены, что подключаетесь к базе данных? Если строка подключения указывает на одну базу данных, и вы запускаете свой тест для другой, это объясняет, почему вы не видите изменения.

2 голосов
/ 19 февраля 2010

Попробуйте написать

"WHERE ID = ? AND STATUS = ?"

и используйте

insert.setString(3, "good");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...