FileDocCategorySizeDatePackage
SQLException.javaAPI DocJava SE 6 API12064Tue Jun 10 00:25:50 BST 2008java.sql

SQLException

public class SQLException extends Exception implements Iterable

An exception that provides information on a database access error or other errors.

Each SQLException provides several kinds of information:

  • a string describing the error. This is used as the Java Exception message, available via the method getMesasge.
  • a "SQLstate" string, which follows either the XOPEN SQLstate conventions or the SQL:2003 conventions. The values of the SQLState string are described in the appropriate spec. The DatabaseMetaData method getSQLStateType can be used to discover whether the driver returns the XOPEN type or the SQL:2003 type.
  • an integer error code that is specific to each vendor. Normally this will be the actual error code returned by the underlying database.
  • a chain to a next Exception. This can be used to provide additional error information.
  • the causal relationship, if any for this SQLException.

Fields Summary
private String
SQLState
private int
vendorCode
private volatile SQLException
next
private static final AtomicReferenceFieldUpdater
nextUpdater
private static final long
serialVersionUID
Constructors Summary
public SQLException(String reason, String SQLState, int vendorCode)
Constructs a SQLException object with a given reason, SQLState and vendorCode. The cause is not initialized, and may subsequently be initialized by a call to the {@link Throwable#initCause(java.lang.Throwable)} method.

param
reason a description of the exception
param
SQLState an XOPEN or SQL:2003 code identifying the exception
param
vendorCode a database vendor-specific exception code

	super(reason);
	this.SQLState = SQLState;
	this.vendorCode = vendorCode;
	if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		DriverManager.println("SQLState(" + SQLState +
						") vendor code(" + vendorCode + ")");
		printStackTrace(DriverManager.getLogWriter());
	    }
	}
    
public SQLException(String reason, String SQLState)
Constructs a SQLException object with a given reason and SQLState. The cause is not initialized, and may subsequently be initialized by a call to the {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code is initialized to 0.

param
reason a description of the exception
param
SQLState an XOPEN or SQL:2003 code identifying the exception

	super(reason);
	this.SQLState = SQLState;
	this.vendorCode = 0;
	if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		printStackTrace(DriverManager.getLogWriter());
		DriverManager.println("SQLException: SQLState(" + SQLState + ")");
	    }
	}
    
public SQLException(String reason)
Constructs a SQLException object with a given reason. The SQLState is initialized to null and the vender code is initialized to 0. The cause is not initialized, and may subsequently be initialized by a call to the {@link Throwable#initCause(java.lang.Throwable)} method.

param
reason a description of the exception

	super(reason);
	this.SQLState = null;
	this.vendorCode = 0;
	if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		printStackTrace(DriverManager.getLogWriter());
	    }
	}
    
public SQLException()
Constructs a SQLException object. The reason, SQLState are initialized to null and the vendor code is initialized to 0. The cause is not initialized, and may subsequently be initialized by a call to the {@link Throwable#initCause(java.lang.Throwable)} method.

	super();
	this.SQLState = null;
	this.vendorCode = 0;
	if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		printStackTrace(DriverManager.getLogWriter());
	    }
	}
    
public SQLException(Throwable cause)
Constructs a SQLException object with a given cause. The SQLState is initialized to null and the vendor code is initialized to 0. The reason is initialized to null if cause==null or to cause.toString() if cause!=null.

param
cause the underlying reason for this SQLException (which is saved for later retrieval by the getCause() method); may be null indicating the cause is non-existent or unknown.
since
1.6

        super(cause);

        if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		printStackTrace(DriverManager.getLogWriter());
	    }
	}
    
public SQLException(String reason, Throwable cause)
Constructs a SQLException object with a given reason and cause. The SQLState is initialized to null and the vendor code is initialized to 0.

param
reason a description of the exception.
param
cause the underlying reason for this SQLException (which is saved for later retrieval by the getCause() method); may be null indicating the cause is non-existent or unknown.
since
1.6

    	super(reason,cause);

        if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		    printStackTrace(DriverManager.getLogWriter());
	    }
	}
    
public SQLException(String reason, String sqlState, Throwable cause)
Constructs a SQLException object with a given reason, SQLState and cause. The vendor code is initialized to 0.

param
reason a description of the exception.
param
sqlState an XOPEN or SQL:2003 code identifying the exception
param
cause the underlying reason for this SQLException (which is saved for later retrieval by the getCause() method); may be null indicating the cause is non-existent or unknown.
since
1.6

        super(reason,cause);

        this.SQLState = sqlState;
        this.vendorCode = 0;
        if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		printStackTrace(DriverManager.getLogWriter());
		DriverManager.println("SQLState(" + SQLState + ")");
	    }
	}
    
public SQLException(String reason, String sqlState, int vendorCode, Throwable cause)
Constructs a SQLException object with a given reason, SQLState, vendorCode and cause.

param
reason a description of the exception
param
sqlState an XOPEN or SQL:2003 code identifying the exception
param
vendorCode a database vendor-specific exception code
param
cause the underlying reason for this SQLException (which is saved for later retrieval by the getCause() method); may be null indicating the cause is non-existent or unknown.
since
1.6

    	super(reason,cause);

        this.SQLState = sqlState;
        this.vendorCode = vendorCode;
        if (!(this instanceof SQLWarning)) {
	    if (DriverManager.getLogWriter() != null) {
		DriverManager.println("SQLState(" + SQLState +
						") vendor code(" + vendorCode + ")");
		printStackTrace(DriverManager.getLogWriter());
	    }
	}
    
Methods Summary
public intgetErrorCode()
Retrieves the vendor-specific exception code for this SQLException object.

return
the vendor's error code

	return (vendorCode);
    
public java.sql.SQLExceptiongetNextException()
Retrieves the exception chained to this SQLException object by setNextException(SQLException ex).

return
the next SQLException object in the chain; null if there are none
see
#setNextException

	return (next);
    
public java.lang.StringgetSQLState()
Retrieves the SQLState for this SQLException object.

return
the SQLState value

	return (SQLState);
    
public java.util.Iteratoriterator()
Returns an iterator over the chained SQLExceptions. The iterator will be used to iterate over each SQLException and its underlying cause (if any).

return
an iterator over the chained SQLExceptions and causes in the proper order
since
1.6

       
       return new Iterator<Throwable>() {
           
           SQLException firstException = SQLException.this;
           SQLException nextException = firstException.getNextException(); 
           Throwable cause = firstException.getCause();
           
           public boolean hasNext() {
               if(firstException != null || nextException != null || cause != null)
                   return true;
               return false;
           }
           
           public Throwable next() {
               Throwable throwable = null;
               if(firstException != null){
                   throwable = firstException;
                   firstException = null;
               }
               else if(cause != null){
                   throwable = cause;
                   cause = cause.getCause();
               }
               else if(nextException != null){
                   throwable = nextException;
                   cause = nextException.getCause();
                   nextException = nextException.getNextException();
               }
               else
                   throw new NoSuchElementException();
               return throwable;
           }
           
           public void remove() {
               throw new UnsupportedOperationException();
           }
       
       };
        
    
public voidsetNextException(java.sql.SQLException ex)
Adds an SQLException object to the end of the chain.

param
ex the new exception that will be added to the end of the SQLException chain
see
#getNextException

     
	SQLException current = this;
        for(;;) {
            SQLException next=current.next;
            if (next != null) {
                current = next;
                continue;
            }

            if (nextUpdater.compareAndSet(current,null,ex)) {
                return;
            }
            current=current.next;
        }