- java.lang.Object
-
- org.hsqldb.jdbc.JDBCArray
-
- All Implemented Interfaces:
java.sql.Array
public class JDBCArray extends java.lang.Object implements java.sql.Array
The mapping in the Java programming language for the SQL typeARRAY
. By default, anArray
value is a transaction-duration reference to an SQLARRAY
value. By default, anArray
object is implemented using an SQL LOCATOR(array) internally, which means that anArray
object contains a logical pointer to the data in the SQLARRAY
value rather than containing theARRAY
value's data.The
Array
interface provides methods for bringing an SQLARRAY
value's data to the client as either an array or aResultSet
object. If the elements of the SQLARRAY
are a UDT, they may be custom mapped. To create a custom mapping, a programmer must do two things:- create a class that implements the
SQLData
interface for the UDT to be custom mapped. - make an entry in a type map that contains
- the fully-qualified SQL type name of the UDT
- the
Class
object for the class implementingSQLData
When a type map with an entry for the base type is supplied to the methods
getArray
andgetResultSet
, the mapping it contains will be used to map the elements of theARRAY
value. If no type map is supplied, which would typically be the case, the connection's type map is used by default. If the connection's type map or a type map supplied to a method has no entry for the base type, the elements are mapped according to the standard mapping.All methods on the
Array
interface must be fully implemented if the JDBC driver supports the data type.- Since:
- JDK 1.2, HSQLDB 2.0
- Author:
- Fred Toussi (fredt@users dot sourceforge.net)
-
-
Constructor Summary
Constructors Constructor Description JDBCArray(java.lang.Object[] data, org.hsqldb.types.Type type, org.hsqldb.types.Type arrayType, org.hsqldb.SessionInterface session)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
free()
This method frees theArray
object and releases the resources that it holds.java.lang.Object
getArray()
Retrieves the contents of the SQLARRAY
value designated by thisArray
object in the form of an array in the Java programming language.java.lang.Object
getArray(long index, int count)
Retrieves a slice of the SQLARRAY
value designated by thisArray
object, beginning with the specifiedindex
and containing up tocount
successive elements of the SQL array.java.lang.Object
getArray(long index, int count, java.util.Map<java.lang.String,java.lang.Class<?>> map)
Retrieves a slice of the SQLARRAY
value designated by thisArray
object, beginning with the specifiedindex
and containing up tocount
successive elements of the SQL array.java.lang.Object
getArray(java.util.Map<java.lang.String,java.lang.Class<?>> map)
Retrieves the contents of the SQLARRAY
value designated by thisArray
object.java.lang.Object[]
getArrayInternal()
int
getBaseType()
Retrieves the JDBC type of the elements in the array designated by thisArray
object.java.lang.String
getBaseTypeName()
Retrieves the SQL type name of the elements in the array designated by thisArray
object.java.sql.ResultSet
getResultSet()
Retrieves a result set that contains the elements of the SQLARRAY
value designated by thisArray
object.java.sql.ResultSet
getResultSet(long index, int count)
Retrieves a result set holding the elements of the subarray that starts at indexindex
and contains up tocount
successive elements.java.sql.ResultSet
getResultSet(long index, int count, java.util.Map<java.lang.String,java.lang.Class<?>> map)
Retrieves a result set holding the elements of the subarray that starts at indexindex
and contains up tocount
successive elements.java.sql.ResultSet
getResultSet(java.util.Map<java.lang.String,java.lang.Class<?>> map)
Retrieves a result set that contains the elements of the SQLARRAY
value designated by thisArray
object.java.lang.String
toString()
Returns a string representation in the formARRAY[..., ...]
-
-
-
Method Detail
-
getBaseTypeName
public java.lang.String getBaseTypeName() throws java.sql.SQLException
Retrieves the SQL type name of the elements in the array designated by thisArray
object. If the elements are a built-in type, it returns the database-specific type name of the elements. If the elements are a user-defined type (UDT), this method returns the fully-qualified SQL type name.- Specified by:
getBaseTypeName
in interfacejava.sql.Array
- Returns:
- a
String
that is the database-specific name for a built-in base type; or the fully-qualified SQL type name for a base type that is a UDT - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the type name- Since:
- JDK 1.2
-
getBaseType
public int getBaseType() throws java.sql.SQLException
Retrieves the JDBC type of the elements in the array designated by thisArray
object.- Specified by:
getBaseType
in interfacejava.sql.Array
- Returns:
- a constant from the class
Types
that is the type code for the elements in the array designated by thisArray
object - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the base typejava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getArray
public java.lang.Object getArray() throws java.sql.SQLException
Retrieves the contents of the SQLARRAY
value designated by thisArray
object in the form of an array in the Java programming language. This version of the methodgetArray
uses the type map associated with the connection for customizations of the type mappings.Note: When
getArray
is used to materialize a base type that maps to a primitive data type, then it is implementation-defined whether the array returned is an array of that primitive data type or an array ofObject
.HSQLDB-Specific Information:
HSQLDB always returns an array ofObject
.- Specified by:
getArray
in interfacejava.sql.Array
- Returns:
- an array in the Java programming language that contains
the ordered elements of the SQL
ARRAY
value designated by thisArray
object - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getArray
public java.lang.Object getArray(java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException
Retrieves the contents of the SQLARRAY
value designated by thisArray
object. This method uses the specifiedmap
for type map customizations unless the base type of the array does not match a user-defined type inmap
, in which case it uses the standard mapping. This version of the methodgetArray
uses either the given type map or the standard mapping; it never uses the type map associated with the connection.Note: When
getArray
is used to materialize a base type that maps to a primitive data type, then it is implementation-defined whether the array returned is an array of that primitive data type or an array ofObject
.HSQLDB-Specific Information:
HSQLDB always returns an array ofObject
.- Specified by:
getArray
in interfacejava.sql.Array
- Parameters:
map
- ajava.util.Map
object that contains mappings of SQL type names to classes in the Java programming language- Returns:
- an array in the Java programming language that contains the ordered elements of the SQL array designated by this object
- Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getArray
public java.lang.Object getArray(long index, int count) throws java.sql.SQLException
Retrieves a slice of the SQLARRAY
value designated by thisArray
object, beginning with the specifiedindex
and containing up tocount
successive elements of the SQL array. This method uses the type map associated with the connection for customizations of the type mappings.Note: When
getArray
is used to materialize a base type that maps to a primitive data type, then it is implementation-defined whether the array returned is an array of that primitive data type or an array ofObject
.HSQLDB-Specific Information:
HSQLDB always returns an array ofObject
.- Specified by:
getArray
in interfacejava.sql.Array
- Parameters:
index
- the array index of the first element to retrieve; the first element is at index 1count
- the number of successive SQL array elements to retrieve- Returns:
- an array containing up to
count
consecutive elements of the SQL array, beginning with elementindex
- Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getArray
public java.lang.Object getArray(long index, int count, java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException
Retrieves a slice of the SQLARRAY
value designated by thisArray
object, beginning with the specifiedindex
and containing up tocount
successive elements of the SQL array.This method uses the specified
map
for type map customizations unless the base type of the array does not match a user-defined type inmap
, in which case it uses the standard mapping. This version of the methodgetArray
uses either the given type map or the standard mapping; it never uses the type map associated with the connection.Note: When
getArray
is used to materialize a base type that maps to a primitive data type, then it is implementation-defined whether the array returned is an array of that primitive data type or an array ofObject
.HSQLDB-Specific Information:
HSQLDB always returns an array ofObject
.- Specified by:
getArray
in interfacejava.sql.Array
- Parameters:
index
- the array index of the first element to retrieve; the first element is at index 1count
- the number of successive SQL array elements to retrievemap
- ajava.util.Map
object that contains SQL type names and the classes in the Java programming language to which they are mapped- Returns:
- an array containing up to
count
consecutive elements of the SQLARRAY
value designated by thisArray
object, beginning with elementindex
- Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getResultSet
public java.sql.ResultSet getResultSet() throws java.sql.SQLException
Retrieves a result set that contains the elements of the SQLARRAY
value designated by thisArray
object. If appropriate, the elements of the array are mapped using the connection's type map; otherwise, the standard mapping is used.The result set contains one row for each array element, with two columns in each row. The second column stores the element value; the first column stores the index into the array for that element (with the first array element being at index 1). The rows are in ascending order corresponding to the order of the indices.
- Specified by:
getResultSet
in interfacejava.sql.Array
- Returns:
- a
ResultSet
object containing one row for each of the elements in the array designated by thisArray
object, with the rows in ascending order based on the indices. - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getResultSet
public java.sql.ResultSet getResultSet(java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException
Retrieves a result set that contains the elements of the SQLARRAY
value designated by thisArray
object. This method uses the specifiedmap
for type map customizations unless the base type of the array does not match a user-defined type inmap
, in which case it uses the standard mapping. This version of the methodgetResultSet
uses either the given type map or the standard mapping; it never uses the type map associated with the connection.The result set contains one row for each array element, with two columns in each row. The second column stores the element value; the first column stores the index into the array for that element (with the first array element being at index 1). The rows are in ascending order corresponding to the order of the indices.
- Specified by:
getResultSet
in interfacejava.sql.Array
- Parameters:
map
- contains the mapping of SQL user-defined types to classes in the Java programming language- Returns:
- a
ResultSet
object containing one row for each of the elements in the array designated by thisArray
object, with the rows in ascending order based on the indices. - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getResultSet
public java.sql.ResultSet getResultSet(long index, int count) throws java.sql.SQLException
Retrieves a result set holding the elements of the subarray that starts at indexindex
and contains up tocount
successive elements. This method uses the connection's type map to map the elements of the array if the map contains an entry for the base type. Otherwise, the standard mapping is used.The result set has one row for each element of the SQL array designated by this object, with the first row containing the element at index
index
. The result set has up tocount
rows in ascending order based on the indices. Each row has two columns: The second column stores the element value; the first column stores the index into the array for that element.- Specified by:
getResultSet
in interfacejava.sql.Array
- Parameters:
index
- the array index of the first element to retrieve; the first element is at index 1count
- the number of successive SQL array elements to retrieve- Returns:
- a
ResultSet
object containing up tocount
consecutive elements of the SQL array designated by thisArray
object, starting at indexindex
. - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
getResultSet
public java.sql.ResultSet getResultSet(long index, int count, java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException
Retrieves a result set holding the elements of the subarray that starts at indexindex
and contains up tocount
successive elements. This method uses the specifiedmap
for type map customizations unless the base type of the array does not match a user-defined type inmap
, in which case it uses the standard mapping. This version of the methodgetResultSet
uses either the given type map or the standard mapping; it never uses the type map associated with the connection.The result set has one row for each element of the SQL array designated by this object, with the first row containing the element at index
index
. The result set has up tocount
rows in ascending order based on the indices. Each row has two columns: The second column stores the element value; the first column stores the index into the array for that element.- Specified by:
getResultSet
in interfacejava.sql.Array
- Parameters:
index
- the array index of the first element to retrieve; the first element is at index 1count
- the number of successive SQL array elements to retrievemap
- theMap
object that contains the mapping of SQL type names to classes in the Java(tm) programming language- Returns:
- a
ResultSet
object containing up tocount
consecutive elements of the SQL array designated by thisArray
object, starting at indexindex
. - Throws:
java.sql.SQLException
- if an error occurs while attempting to access the arrayjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.2
-
toString
public java.lang.String toString()
Returns a string representation in the formARRAY[..., ...]
- Overrides:
toString
in classjava.lang.Object
-
free
public void free() throws java.sql.SQLException
This method frees theArray
object and releases the resources that it holds. The object is invalid once thefree
method is called.After
free
has been called, any attempt to invoke a method other thanfree
will result in aSQLException
being thrown. Iffree
is called multiple times, the subsequent calls tofree
are treated as a no-op.- Specified by:
free
in interfacejava.sql.Array
- Throws:
java.sql.SQLException
- if an error occurs releasing the Array's resourcesjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support this method- Since:
- JDK 1.6
-
getArrayInternal
public java.lang.Object[] getArrayInternal()
-
-