If the statement is going to be reused often, you can avoid processing time spent by the database parsing the SQL statement for each call by creating a prepared statement and updating on the value for each call -- the prepared statement will have a placeholder for the variable value, and the SQL will be parsed only when creating the prepared statement.
stm = conn.prepareStatement("update MyTable set Col1 = Col1 - ? where KeyCol = ?");
Then each time you have a new key value and associated offset, you set them as follows:
stm.setInteger(1,newOffset); // assign newOffset value to first ?
stm.setInteger(2,keyVal);
stm.execute(); // executes the statement with the specified values