Named and unnamed rows

The JDBC 3.0 specification refers to an SQL type called a structured type or struct, which is equivalent to the HCL Informix® named row. The specification defines two approaches to exchange structured-type data between a Java client and a relational database:
  • Using the SQLData interface. A single Java class per named row type implements the SQLData interface. The class has a member for each element in the named row.
  • Using the Struct interface. This interface instantiates the necessary Java object for each element in the named row and constructs an array of java.util.Object Java objects.
Whether Informix® JDBC Driver instantiates a Java object or a Struct object for a fetched named row depends on whether there is a customized type-mapping entry or not, as follows:
  • If there is an entry for a named row in the Connection.getTypeMap() map, or if you provided a type mapping using the getObject() method, a single Java object is instantiated.
  • If there is no entry for a named row in the Connection.getTypeMap() map, and if you have not provided a type mapping using the getObject() method, a Struct object is instantiated.
Unnamed rows are always fetched into Struct objects.
Important: Regardless of whether you use the SQLData or Struct interface, if a named or unnamed row contains an opaque data type column, there must be a type-mapping entry for it. If you are using the Struct interface to access a row that contains an opaque data type column, you need a customized type map for the opaque data type column, but not for the row as a whole.

For more information about custom type mapping, see Mapping data types.