Oracle JDBC API Reference
11g Release 2 ("11.2.0.3.0")

oracle.sql
Class Datum

java.lang.Object
  extended by oracle.sql.Datum
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
BINARY_DOUBLE, BINARY_FLOAT, CHAR, DATE, DatumWithConnection, INTERVALDS, INTERVALYM, NUMBER, RAW, ROWID, TIMESTAMP, TIMESTAMPLTZ, TIMESTAMPTZ

public abstract class Datum
extends java.lang.Object
implements java.io.Serializable

The root of Oracle native datatype hierarchy.

Each subclass represents one of the native kernel datatypes.

In order to allow for possible optimization of data copying between SQL and Java, instances of subclasses are immutable.

Since:
JDK1(Oracle)
See Also:
Serialized Form

Constructor Summary
Datum()
          Creates an empty datum
Datum(byte[] newData)
          Create a new datum with the given byte array as representation.
 
Method Summary
 java.io.InputStream asciiStreamValue()
          Convert to an ascii stream representation of the datum object
 java.math.BigDecimal bigDecimalValue()
          Convert to a BigDecimal representation of the datum object
 java.io.InputStream binaryStreamValue()
          Convert to a binary stream representation of the datum object
 boolean booleanValue()
          Convert to a boolean representation of the datum object
 byte byteValue()
          Convert to a byte representation of the datum object
 java.io.Reader characterStreamValue()
          Convert to a character stream representation of the datum object
 java.sql.Date dateValue()
          Convert to a Date representation of the datum object
 double doubleValue()
          Convert to a double representation of the datum object
 boolean equals(java.lang.Object obj)
          Test any object for equality with an Datum.
 float floatValue()
          Convert to a float representation of the datum object
 byte[] getBytes()
          Create a new Java byte array containing a copy of the RDBMS data.
 long getLength()
          Retreive the length of a datum.
 java.io.InputStream getStream()
          Create an input stream so the raw data may be read.
 int intValue()
          Convert to a integer representation of the datum object
abstract  boolean isConvertibleTo(java.lang.Class cls)
          Determines if datum object can be converted to a particular class
 long longValue()
          Convert to a long representation of the datum object
abstract  java.lang.Object makeJdbcArray(int arraySize)
          Returns a JDBC array representation of the datum
 void setBytes(byte[] array)
          Sets datum value using a byte array.
 void setShareBytes(byte[] array)
          Sets datum value using a byte array.
 byte[] shareBytes()
          Retrieve the data bytes.
 java.lang.String stringValue()
          Convert to a String representation of the datum object
 java.lang.String stringValue(java.sql.Connection conn)
          Some Datum subclass such as TIMESTAMPTZ will override this default implementation which simply ignores the the connection.
 java.sql.Timestamp timestampValue()
          Convert to a Timestamp representation of the datum object
 java.sql.Timestamp timestampValue(java.util.Calendar cal)
           
 java.sql.Time timeValue()
          Convert to a Time representation of the datum object
 java.sql.Time timeValue(java.util.Calendar cal)
           
abstract  java.lang.Object toJdbc()
          Returns the JDBC representation of the datum object
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Datum

public Datum()
Creates an empty datum


Datum

public Datum(byte[] newData)
Create a new datum with the given byte array as representation. Subclasses use this to initialize the data array.

Parameters:
newData - byte array to be stored in the datum
Method Detail

equals

public boolean equals(java.lang.Object obj)
Test any object for equality with an Datum. Datums are equal if they are of the same class and their bytes are the same.

Overrides:
equals in class java.lang.Object
Parameters:
obj - object to compare this with
Returns:
true if the class of this is the same as the class of obj and the byte representation of this is the same as the byte representation of obj.

shareBytes

public byte[] shareBytes()
Retrieve the data bytes.

Used by java code in subclasses to access the data bytes. If the bytes are not yet a Java array, this may cause them to be copied into one.

Returns:
a shared pointer to the datum's data bytes.

getLength

public long getLength()
Retreive the length of a datum.

Returns:
The length of the datum in bytes.

setBytes

public void setBytes(byte[] array)
Sets datum value using a byte array. The byte array is copied.

Parameters:
array - byte array used to set the datum value

setShareBytes

public void setShareBytes(byte[] array)
Sets datum value using a byte array. The byte array is referenced.

Parameters:
array - byte array used to set the datum value

getBytes

public byte[] getBytes()
Create a new Java byte array containing a copy of the RDBMS data. No conversions of any kind are done.

For now, the data array is simply copied. When we are using moss to go directly to the buffer cache, this implementation will be overridden by a native method which will cons an array and copy the bytes into it.

Subclasses which handle very long datatypes which will not ordinarily be represented as Java array, should check for allocation failure and return nil if detected. They should however try to materialize the raw data no matter how long since users may actually need to materialize huge arrays.

Returns:
A new copy of the data bytes or nil if the data could not be materialized because it was too long.

getStream

public java.io.InputStream getStream()
Create an input stream so the raw data may be read.

This is the normal way to access long datatypes.

Returns:
an input stream.

stringValue

public java.lang.String stringValue()
                             throws java.sql.SQLException
Convert to a String representation of the datum object

Returns:
String representation of the datum object
Throws:
SQLException, - if no String representation exists
java.sql.SQLException

stringValue

public java.lang.String stringValue(java.sql.Connection conn)
                             throws java.sql.SQLException
Some Datum subclass such as TIMESTAMPTZ will override this default implementation which simply ignores the the connection.

Throws:
java.sql.SQLException

booleanValue

public boolean booleanValue()
                     throws java.sql.SQLException
Convert to a boolean representation of the datum object

Returns:
boolean representation of the datum object
Throws:
SQLException, - if no boolean representation exists
java.sql.SQLException

intValue

public int intValue()
             throws java.sql.SQLException
Convert to a integer representation of the datum object

Returns:
integer representation of the datum object
Throws:
SQLException, - if no integer representation exists
java.sql.SQLException

longValue

public long longValue()
               throws java.sql.SQLException
Convert to a long representation of the datum object

Returns:
long representation of the datum object
Throws:
SQLException, - if no long representation exists
java.sql.SQLException

floatValue

public float floatValue()
                 throws java.sql.SQLException
Convert to a float representation of the datum object

Returns:
float representation of the datum object
Throws:
SQLException, - if no float representation exists
java.sql.SQLException

doubleValue

public double doubleValue()
                   throws java.sql.SQLException
Convert to a double representation of the datum object

Returns:
double representation of the datum object
Throws:
SQLException, - if no double representation exists
java.sql.SQLException

byteValue

public byte byteValue()
               throws java.sql.SQLException
Convert to a byte representation of the datum object

Returns:
byte representation of the datum object
Throws:
SQLException, - if no byte representation exists
java.sql.SQLException

bigDecimalValue

public java.math.BigDecimal bigDecimalValue()
                                     throws java.sql.SQLException
Convert to a BigDecimal representation of the datum object

Returns:
java.math.BigDecimal representation of the datum object
Throws:
SQLException, - if no BigDecimal representation exists
java.sql.SQLException

dateValue

public java.sql.Date dateValue()
                        throws java.sql.SQLException
Convert to a Date representation of the datum object

Returns:
java.sql.Date representation of the datum object
Throws:
SQLException, - if no Date representation exists
java.sql.SQLException

timeValue

public java.sql.Time timeValue()
                        throws java.sql.SQLException
Convert to a Time representation of the datum object

Returns:
java.sql.Time representation of the datum object
Throws:
SQLException, - if no Time representation exists
java.sql.SQLException

timeValue

public java.sql.Time timeValue(java.util.Calendar cal)
                        throws java.sql.SQLException
Throws:
java.sql.SQLException

timestampValue

public java.sql.Timestamp timestampValue()
                                  throws java.sql.SQLException
Convert to a Timestamp representation of the datum object

Returns:
java.sql.Timestamp representation of the datum object
Throws:
SQLException, - if no Timestamp representation exists
java.sql.SQLException

timestampValue

public java.sql.Timestamp timestampValue(java.util.Calendar cal)
                                  throws java.sql.SQLException
Throws:
java.sql.SQLException

characterStreamValue

public java.io.Reader characterStreamValue()
                                    throws java.sql.SQLException
Convert to a character stream representation of the datum object

Returns:
character stream representation of the datum object
Throws:
SQLException, - if no character stream representation exists
java.sql.SQLException

asciiStreamValue

public java.io.InputStream asciiStreamValue()
                                     throws java.sql.SQLException
Convert to an ascii stream representation of the datum object

Returns:
ascii stream representation of the datum object
Throws:
SQLException, - if no ascii stream representation exists
java.sql.SQLException

binaryStreamValue

public java.io.InputStream binaryStreamValue()
                                      throws java.sql.SQLException
Convert to a binary stream representation of the datum object

Returns:
binary stream representation of the datum object
Throws:
SQLException, - if no binary stream representation exists
java.sql.SQLException

isConvertibleTo

public abstract boolean isConvertibleTo(java.lang.Class cls)
Determines if datum object can be converted to a particular class

Parameters:
cls - Class to convert to
Returns:
true, if conversion to cls is permitted false, if conversion to cls is not permitted

toJdbc

public abstract java.lang.Object toJdbc()
                                 throws java.sql.SQLException
Returns the JDBC representation of the datum object

Returns:
an object containing the JDBC value
Throws:
java.sql.SQLException - if conversion to JDBC representation results in an error

makeJdbcArray

public abstract java.lang.Object makeJdbcArray(int arraySize)
Returns a JDBC array representation of the datum

Parameters:
arraySize - size of the array
Returns:
an object containing the JDBC array value

Oracle JDBC API Reference
11g Release 2 ("11.2.0.3.0")

Copyright © 1998, 2007, Oracle. All rights reserved.