I have the following enum:
public enum AccountStatus {
ENABLED,
CONFIRMATION_PENDING,
EXPIRED,
LOCKED,
DISABLED,
CREDENTIALS_EXPIRED,
}
That I'm binding to checkboxes in a JSP form:
<li><form:checkbox path="accountStatus" value="ENABLED" label="Enabled" /></li>
<li><form:checkbox path="accountStatus" value="CONFIRMATION_PENDING" label="Confirmation Pending" /></li>
...
<li><form:checkbox path="accountStatus" value="CREDENTIALS_EXPIRED" label="Credentials Expired" /></li>
In my controller when I get the selected checkbox values I convert the String to an Enum as follows:
AccountStatus accountStatus = AccountStatus.valueOf("selected string here");
Then in my DAO (using Spring JdbcTemplate) I query my database using the selected values:
String SQL = "SELECT * FROM TABLE_A WHERE column = \'" + accountStatus.name() + "\'";
jdbcTemplate.query(SQL, new MyMapper());
Since I'm validating each user selected checkbox by using AccountStatus.valueOf(...)
, is this way of doing safe from SQL injection?