View Javadoc

1   package ca.spaz.sql;
2   
3   import java.sql.*;
4   import java.util.*;
5   
6   import org.apache.log4j.Logger;
7   
8   /***
9    * Simplifies constructing SQL Update Queries.
10   */
11  public class SQLUpdate extends SQLSelectableStatement implements Columns {
12      /***
13       * Logger for this class
14       */
15      private static final Logger logger = Logger.getLogger(SQLUpdate.class);
16  
17      private SQLColumnSet cols;
18  
19     /***
20      * Create a new SQLUpdate command for the given table
21      * @param tableName the name of the table to update on
22      */
23     public SQLUpdate(String tableName) {
24        super(tableName, true, false, true);
25        cols = new SQLColumnSet();
26     }
27  
28     /*** 
29      * Overrides execute() and calls executeUpdate()
30      */
31     protected void doExecute(Connection con) throws SQLException {
32        Statement stmt = con.createStatement();      
33        String query = this.getQueryString();
34        if (logger.isDebugEnabled()) {
35            logger.debug("executeQuery() - Statement to be executed: " + query);
36        }
37       
38        stmt.executeUpdate(query);
39     }
40  
41     /***
42      * Generate the SQL string for an UPDATE command.
43      */
44     protected String getQueryString() {
45        StringBuffer sb = new StringBuffer();
46        sb.append("UPDATE ");
47        sb.append(getTableName());
48        sb.append(" SET ");
49        List names = cols.getNames();
50        List terms = cols.getValues();
51        for (int i=0; i<names.size(); i++) {         
52           Object name = names.get(i);
53           Object term = terms.get(i);
54           if (term == null) {
55              term = "NULL"; 
56           }
57           sb.append(name.toString());
58           sb.append(" = '");
59           sb.append(escape(term.toString()));
60           sb.append("' ");
61           if (i < names.size() - 1) {
62              sb.append(", ");
63           }
64        }
65        sb.append(getWhere());
66        return sb.toString();
67     }
68  
69     /***
70      * Retrieve the <code>cols</code> from the <code>SQLInsert</code>
71      * @return Returns the cols.
72      */
73     public SQLColumnSet getColumns() {
74        return cols;
75     }
76  
77  }