View Javadoc
1   /*
2    * Copyright 2002-2012 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.jdbc;
18  
19  import java.sql.SQLException;
20  
21  import org.springframework.dao.InvalidDataAccessResourceUsageException;
22  
23  /**
24   * Exception thrown when SQL specified is invalid. Such exceptions always have
25   * a {@code java.sql.SQLException} root cause.
26   *
27   * <p>It would be possible to have subclasses for no such table, no such column etc.
28   * A custom SQLExceptionTranslator could create such more specific exceptions,
29   * without affecting code using this class.
30   *
31   * @author Rod Johnson
32   * @see InvalidResultSetAccessException
33   */
34  @SuppressWarnings("serial")
35  public class BadSqlGrammarException extends InvalidDataAccessResourceUsageException {
36  
37  	private String sql;
38  
39  
40  	/**
41  	 * Constructor for BadSqlGrammarException.
42  	 * @param task name of current task
43  	 * @param sql the offending SQL statement
44  	 * @param ex the root cause
45  	 */
46  	public BadSqlGrammarException(String task, String sql, SQLException ex) {
47  		super(task + "; bad SQL grammar [" + sql + "]", ex);
48  		this.sql = sql;
49  	}
50  
51  
52  	/**
53  	 * Return the wrapped SQLException.
54  	 */
55  	public SQLException getSQLException() {
56  		return (SQLException) getCause();
57  	}
58  
59  	/**
60  	 * Return the SQL that caused the problem.
61  	 */
62  	public String getSql() {
63  		return this.sql;
64  	}
65  
66  }