Search code examples
javasqljdbcprepared-statement

Retrieve and update field java


Using Java I want to obtain all IDs from my database and select GW_STATUS if it is equal to 0. I used the following SQL statement to achieve this.

PreparedStatement get_id = con.prepareStatement("SELECT ID from SF_MESSAGES where GW_STATUS = 0");

Once the IDs have been obtained, I want to update GW_STATUS to 1 according to their ID as demonstrated in the code below but only one field is being updated when I execute the code.

PreparedStatement update = con.prepareStatement("update SF_MESSAGES set GW_STATUS=? where ID = ?");
    update.setInt(1,1);
    ResultSet x = get_id.executeQuery();
    while(x.next()){
        int uber = x.getInt(1);
        int array[] = new int[] {uber};
        for (int value : array) {
            System.out.println("Value = " + value); //Successfully obtains and prints each ID from the databse table
             update.setInt(2,value); // Only one ID is updated therefore only field updated
          }
    }
    int result = update.executeUpdate(); 
    System.out.println(result + " Records updated");

I've tried using another update statement within the for loop to update every ID obtained but that doesn't work too. How can I successfully update every field according to their ID?


Solution

  • You can make the whole processing much simple. It turns out that you just want to update SF_MESSAGES which have GW_STATUS equals to 0, so your query can look like the following:

    update SF_MESSAGES set GW_STATUS=1 where GW_STATUS=0
    

    Therefore, you do not have to fetch IDs, loop over them so it is more efficient solution.