1 package com.imcode.db.commands; 2 3 import com.imcode.db.DatabaseConnection; 4 import com.imcode.db.DatabaseException; 5 import org.apache.commons.lang.StringUtils; 6 7 public class UpdateTableWhereColumnEqualsDatabaseCommand extends ColumnValuesDatabaseCommand { 8 9 private final String columnName; 10 private Object columnValue; 11 12 public UpdateTableWhereColumnEqualsDatabaseCommand(String tableName, String columnName, 13 Object columnValue, Object[][] columnNamesAndValues) { 14 super(tableName, columnNamesAndValues); 15 this.columnName = columnName; 16 this.columnValue = columnValue; 17 } 18 19 public Object executeOn(DatabaseConnection connection) throws DatabaseException { 20 String[] columnNamePlaceHolderPairs = new String[columnNames.length]; 21 for ( int i = 0; i < columnNames.length; i++ ) { 22 columnNamePlaceHolderPairs[i] = columnNames[i]+ " = ?"; 23 } 24 Object[] parameters = new Object[columnValues.length+1]; 25 System.arraycopy(columnValues, 0, parameters, 0, columnValues.length); 26 parameters[parameters.length-1] = columnValue ; 27 return new Integer(connection.executeUpdate("UPDATE "+tableName+" SET "+ StringUtils.join(columnNamePlaceHolderPairs, ", ")+ " WHERE "+columnName +" = ?", parameters)) ; 28 } 29 }