O'Reilly logo

Java Programming with Oracle JDBC by Donald Bales

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Arrays

A java.sql.Array is used as an object attribute of a Struct to store a Java array in or retrieve one from a SQL ARRAY attribute. This means you’ll use an Array object to manipulate Oracle collections: varying arrays (VARRAYs) or nested tables.

An Array can represent an array of a single predefined data type such as String. For example, if you have an array of String objects, you can store them as an Oracle collection. Using the default mapping, Oracle will convert the array of Strings into a collection of VARCHAR2s. An Array can also store an array of objects -- for example, a PersonIdentifier object that has two attributes, an id, and an id_type.

If you wish to store an array of Java objects such as PersonIdentifier as a collection of database objects, you first have to convert the Java objects themselves into Struct objects and then create a new Array by passing the array of Struct objects to the constructor of the Array. This is because a database object, whether it’s a table row, column, or part of a collection, is represented by a Struct object.

Just like its weakly typed counterpart Struct, java.sql.Array is an interface that defines how to materialize a SQL ARRAY from a database, but it is up to the database vendor to provide the functionality to be able to create new Array objects in a Java program. And, in a similar fashion, you use oracle.sql.ArrayDescriptor to create an Array, just as you used a StructDescriptor to create a Struct. Let’s look at how you create a ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required