001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package java.sql;
019:
020: import java.io.Serializable;
021:
022: /**
023: * An Exception class that is used in conjunction with JDBC operations. It
024: * provides information about problems encountered with Database access and
025: * other problems related to JDBC
026: * <p>
027: * The SQLException class provides the following information:
028: * <ul>
029: * <li>A standard Java exception message, as a String
030: * <li>An SQLState string. This is an error description string which follows
031: * either the SQL 99 conventions or the XOPEN SQLstate conventions. The
032: * potential values of the SQLState string are described in each of the
033: * specifications. Which of the conventions is being used by the SQLState string
034: * can be discovered by using the getSQLStateType method of the DatabaseMetaData
035: * interface.
036: * <li>An Error Code, an an integer. The error code is specific to each
037: * database vendor and is typically the error code returned by the database
038: * itself.
039: * <li>A chain to a next Exception, if relevant, which can give access to
040: * additional error information.
041: * </ul>
042: */
043: public class SQLException extends Exception implements Serializable {
044:
045: private static final long serialVersionUID = 2135244094396331484L;
046:
047: private String SQLState = null;
048:
049: private int vendorCode = 0;
050:
051: private SQLException next = null;
052:
053: /**
054: * Creates an SQLException object. The Reason string is set to null, the
055: * SQLState string is set to null and the Error Code is set to 0.
056: */
057: public SQLException() {
058: super ();
059: }
060:
061: /**
062: * Creates an SQLException object. The Reason string is set to the given
063: * reason string, the SQLState string is set to null and the Error Code is
064: * set to 0.
065: *
066: * @param theReason
067: * the string to use as the Reason string
068: */
069: public SQLException(String theReason) {
070: this (theReason, null, 0);
071: }
072:
073: /**
074: * Creates an SQLException object. The Reason string is set to the given
075: * reason string, the SQLState string is set to the given SQLState string
076: * and the Error Code is set to 0.
077: *
078: * @param theReason
079: * the string to use as the Reason string
080: * @param theSQLState
081: * the string to use as the SQLState string
082: */
083: public SQLException(String theReason, String theSQLState) {
084: this (theReason, theSQLState, 0);
085: }
086:
087: /**
088: * Creates an SQLException object. The Reason string is set to the given
089: * reason string, the SQLState string is set to the given SQLState string
090: * and the Error Code is set to the given error code value.
091: *
092: * @param theReason
093: * the string to use as the Reason string
094: * @param theSQLState
095: * the string to use as the SQLState string
096: * @param theErrorCode
097: * the integer value for the error code
098: */
099: public SQLException(String theReason, String theSQLState,
100: int theErrorCode) {
101: super (theReason);
102: SQLState = theSQLState;
103: vendorCode = theErrorCode;
104: }
105:
106: /**
107: * Returns the integer error code for this SQLException
108: *
109: * @return The integer error code for this SQLException. The meaning of the
110: * code is specific to the vendor of the database.
111: */
112: public int getErrorCode() {
113: return vendorCode;
114: }
115:
116: /**
117: * Retrieves the SQLException chained to this SQLException, if any.
118: *
119: * @return The SQLException chained to this SQLException. null if there is
120: * no SQLException chained to this SQLException.
121: */
122: public SQLException getNextException() {
123: return next;
124: }
125:
126: /**
127: * Retrieves the SQLState description string for this SQLException object
128: *
129: * @return The SQLState string for this SQLException object. This is an
130: * error description string which follows either the SQL 99
131: * conventions or the XOPEN SQLstate conventions. The potential
132: * values of the SQLState string are described in each of the
133: * specifications. Which of the conventions is being used by the
134: * SQLState string can be discovered by using the getSQLStateType
135: * method of the DatabaseMetaData interface.
136: */
137: public String getSQLState() {
138: return SQLState;
139: }
140:
141: /**
142: * Adds the SQLException to the end of this SQLException chain.
143: *
144: * @param ex
145: * the new SQLException to be added to the end of the chain
146: */
147: public void setNextException(SQLException ex) {
148: if (next != null) {
149: next.setNextException(ex);
150: } else {
151: next = ex;
152: }
153: }
154: }
|