/* * @(#)Blob.java 1.28 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.sql; /** * The representation (mapping) in * the JavaTM programming * language of an SQL * BLOB value. An SQL BLOB is a built-in type * that stores a Binary Large Object as a column value in a row of * a database table. By default drivers implement Blob using * an SQL locator(BLOB), which means that a * Blob object contains a logical pointer to the * SQL BLOB data rather than the data itself. * A Blob object is valid for the duration of the * transaction in which is was created. * *

Methods in the interfaces {@link ResultSet}, * {@link CallableStatement}, and {@link PreparedStatement}, such as * getBlob and setBlob allow a programmer to * access an SQL BLOB value. * The Blob interface provides methods for getting the * length of an SQL BLOB (Binary Large Object) value, * for materializing a BLOB value on the client, and for * determining the position of a pattern of bytes within a * BLOB value. In addition, this interface has methods for updating * a BLOB value. * * @since 1.2 */ public interface Blob { /** * Returns the number of bytes in the BLOB value * designated by this Blob object. * @return length of the BLOB in bytes * @exception SQLException if there is an error accessing the * length of the BLOB * @since 1.2 */ long length() throws SQLException; /** * Retrieves all or part of the BLOB * value that this Blob object represents, as an array of * bytes. This byte array contains up to length * consecutive bytes starting at position pos. * * @param pos the ordinal position of the first byte in the * BLOB value to be extracted; the first byte is at * position 1 * @param length the number of consecutive bytes to be copied * @return a byte array containing up to length * consecutive bytes from the BLOB value designated * by this Blob object, starting with the * byte at position pos * @exception SQLException if there is an error accessing the * BLOB value * @see #setBytes * @since 1.2 */ byte[] getBytes(long pos, int length) throws SQLException; /** * Retrieves the BLOB value designated by this * Blob instance as a stream. * * @return a stream containing the BLOB data * @exception SQLException if there is an error accessing the * BLOB value * @see #setBinaryStream * @since 1.2 */ java.io.InputStream getBinaryStream () throws SQLException; /** * Retrieves the byte position at which the specified byte array * pattern begins within the BLOB * value that this Blob object represents. The * search for pattern begins at position * start. * * @param pattern the byte array for which to search * @param start the position at which to begin searching; the * first position is 1 * @return the position at which the pattern appears, else -1 * @exception SQLException if there is an error accessing the * BLOB * @since 1.2 */ long position(byte pattern[], long start) throws SQLException; /** * Retrieves the byte position in the BLOB value * designated by this Blob object at which * pattern begins. The search begins at position * start. * * @param pattern the Blob object designating * the BLOB value for which to search * @param start the position in the BLOB value * at which to begin searching; the first position is 1 * @return the position at which the pattern begins, else -1 * @exception SQLException if there is an error accessing the * BLOB value * @since 1.2 */ long position(Blob pattern, long start) throws SQLException; // -------------------------- JDBC 3.0 ----------------------------------- /** * Writes the given array of bytes to the BLOB value that * this Blob object represents, starting at position * pos, and returns the number of bytes written. * * @param pos the position in the BLOB object at which * to start writing * @param bytes the array of bytes to be written to the BLOB * value that this Blob object represents * @return the number of bytes written * @exception SQLException if there is an error accessing the * BLOB value * @see #getBytes * @since 1.4 */ int setBytes(long pos, byte[] bytes) throws SQLException; /** * Writes all or part of the given byte array to the * BLOB value that this Blob object represents * and returns the number of bytes written. * Writing starts at position pos in the BLOB * value; len bytes from the given byte array are written. * * @param pos the position in the BLOB object at which * to start writing * @param bytes the array of bytes to be written to this BLOB * object * @param offset the offset into the array bytes at which * to start reading the bytes to be set * @param len the number of bytes to be written to the BLOB * value from the array of bytes bytes * @return the number of bytes written * @exception SQLException if there is an error accessing the * BLOB value * @see #getBytes * @since 1.4 */ int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException; /** * Retrieves a stream that can be used to write to the BLOB * value that this Blob object represents. The stream begins * at position pos. * * @param pos the position in the BLOB value at which * to start writing * @return a java.io.OutputStream object to which data can * be written * @exception SQLException if there is an error accessing the * BLOB value * @see #getBinaryStream * @since 1.4 */ java.io.OutputStream setBinaryStream(long pos) throws SQLException; /** * Truncates the BLOB value that this Blob * object represents to be len bytes in length. * * @param len the length, in bytes, to which the BLOB value * that this Blob object represents should be truncated * @exception SQLException if there is an error accessing the * BLOB value * @since 1.4 */ void truncate(long len) throws SQLException; }