Search in sources :

Example 1 with JdbcBlob

use of org.h2.jdbc.JdbcBlob in project h2database by h2database.

the class JdbcConnection method createBlob.

/**
 * Create a new empty Blob object.
 *
 * @return the object
 */
@Override
public Blob createBlob() throws SQLException {
    try {
        int id = getNextId(TraceObject.BLOB);
        debugCodeAssign("Blob", TraceObject.BLOB, id, "createClob()");
        checkClosedForWrite();
        try {
            Value v = session.getDataHandler().getLobStorage().createBlob(new ByteArrayInputStream(Utils.EMPTY_BYTES), 0);
            synchronized (session) {
                session.addTemporaryLob(v);
            }
            return new JdbcBlob(this, v, id);
        } finally {
            afterWriting();
        }
    } catch (Exception e) {
        throw logAndConvert(e);
    }
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) Value(org.h2.value.Value) Savepoint(java.sql.Savepoint) DbException(org.h2.message.DbException) SQLClientInfoException(java.sql.SQLClientInfoException) SQLException(java.sql.SQLException)

Example 2 with JdbcBlob

use of org.h2.jdbc.JdbcBlob in project h2database by h2database.

the class JdbcResultSet method getBlob.

/**
 * Returns the value of the specified column as a Blob.
 *
 * @param columnIndex (1,2,...)
 * @return the value
 * @throws SQLException if the column is not found or if the result set is
 *             closed
 */
@Override
public Blob getBlob(int columnIndex) throws SQLException {
    try {
        int id = getNextId(TraceObject.BLOB);
        if (isDebugEnabled()) {
            debugCodeAssign("Blob", TraceObject.BLOB, id, "getBlob(" + columnIndex + ")");
        }
        Value v = get(columnIndex);
        return v == ValueNull.INSTANCE ? null : new JdbcBlob(conn, v, id);
    } catch (Exception e) {
        throw logAndConvert(e);
    }
}
Also used : Value(org.h2.value.Value) DbException(org.h2.message.DbException) SQLException(java.sql.SQLException)

Example 3 with JdbcBlob

use of org.h2.jdbc.JdbcBlob in project h2database by h2database.

the class JdbcResultSet method getBlob.

/**
 * Returns the value of the specified column as a Blob.
 *
 * @param columnLabel the column label
 * @return the value
 * @throws SQLException if the column is not found or if the result set is
 *             closed
 */
@Override
public Blob getBlob(String columnLabel) throws SQLException {
    try {
        int id = getNextId(TraceObject.BLOB);
        if (isDebugEnabled()) {
            debugCodeAssign("Blob", TraceObject.BLOB, id, "getBlob(" + quote(columnLabel) + ")");
        }
        Value v = get(columnLabel);
        return v == ValueNull.INSTANCE ? null : new JdbcBlob(conn, v, id);
    } catch (Exception e) {
        throw logAndConvert(e);
    }
}
Also used : Value(org.h2.value.Value) DbException(org.h2.message.DbException) SQLException(java.sql.SQLException)

Example 4 with JdbcBlob

use of org.h2.jdbc.JdbcBlob in project h2database by h2database.

the class JdbcResultSet method extractObjectOfType.

private <T> T extractObjectOfType(Class<T> type, Value value) throws SQLException {
    if (value == ValueNull.INSTANCE) {
        return null;
    }
    if (type == BigDecimal.class) {
        return type.cast(value.getBigDecimal());
    } else if (type == BigInteger.class) {
        return type.cast(value.getBigDecimal().toBigInteger());
    } else if (type == String.class) {
        return type.cast(value.getString());
    } else if (type == Boolean.class) {
        return type.cast(value.getBoolean());
    } else if (type == Byte.class) {
        return type.cast(value.getByte());
    } else if (type == Short.class) {
        return type.cast(value.getShort());
    } else if (type == Integer.class) {
        return type.cast(value.getInt());
    } else if (type == Long.class) {
        return type.cast(value.getLong());
    } else if (type == Float.class) {
        return type.cast(value.getFloat());
    } else if (type == Double.class) {
        return type.cast(value.getDouble());
    } else if (type == Date.class) {
        return type.cast(value.getDate());
    } else if (type == Time.class) {
        return type.cast(value.getTime());
    } else if (type == Timestamp.class) {
        return type.cast(value.getTimestamp());
    } else if (type == java.util.Date.class) {
        return type.cast(new java.util.Date(value.getTimestamp().getTime()));
    } else if (type == Calendar.class) {
        Calendar calendar = DateTimeUtils.createGregorianCalendar();
        calendar.setTime(value.getTimestamp());
        return type.cast(calendar);
    } else if (type == UUID.class) {
        return type.cast(value.getObject());
    } else if (type == byte[].class) {
        return type.cast(value.getBytes());
    } else if (type == java.sql.Array.class) {
        int id = getNextId(TraceObject.ARRAY);
        return type.cast(value == ValueNull.INSTANCE ? null : new JdbcArray(conn, value, id));
    } else if (type == Blob.class) {
        int id = getNextId(TraceObject.BLOB);
        return type.cast(value == ValueNull.INSTANCE ? null : new JdbcBlob(conn, value, id));
    } else if (type == Clob.class) {
        int id = getNextId(TraceObject.CLOB);
        return type.cast(value == ValueNull.INSTANCE ? null : new JdbcClob(conn, value, id));
    } else if (type == TimestampWithTimeZone.class) {
        return type.cast(value.getObject());
    } else if (DataType.isGeometryClass(type)) {
        return type.cast(value.getObject());
    } else if (type == LocalDateTimeUtils.LOCAL_DATE) {
        return type.cast(LocalDateTimeUtils.valueToLocalDate(value));
    } else if (type == LocalDateTimeUtils.LOCAL_TIME) {
        return type.cast(LocalDateTimeUtils.valueToLocalTime(value));
    } else if (type == LocalDateTimeUtils.LOCAL_DATE_TIME) {
        return type.cast(LocalDateTimeUtils.valueToLocalDateTime(value));
    } else if (type == LocalDateTimeUtils.INSTANT) {
        return type.cast(LocalDateTimeUtils.valueToInstant(value));
    } else if (type == LocalDateTimeUtils.OFFSET_DATE_TIME) {
        return type.cast(LocalDateTimeUtils.valueToOffsetDateTime(value));
    } else {
        throw unsupported(type.getName());
    }
}
Also used : Calendar(java.util.Calendar) Time(java.sql.Time) ValueTime(org.h2.value.ValueTime) ValueDouble(org.h2.value.ValueDouble) ValueDate(org.h2.value.ValueDate) Date(java.sql.Date) Array(java.sql.Array) ValueLong(org.h2.value.ValueLong) BigInteger(java.math.BigInteger) ValueBoolean(org.h2.value.ValueBoolean) UUID(java.util.UUID) NClob(java.sql.NClob) Clob(java.sql.Clob) ValueShort(org.h2.value.ValueShort)

Aggregations

SQLException (java.sql.SQLException)3 DbException (org.h2.message.DbException)3 Value (org.h2.value.Value)3 ByteArrayInputStream (java.io.ByteArrayInputStream)1 BigInteger (java.math.BigInteger)1 Array (java.sql.Array)1 Clob (java.sql.Clob)1 Date (java.sql.Date)1 NClob (java.sql.NClob)1 SQLClientInfoException (java.sql.SQLClientInfoException)1 Savepoint (java.sql.Savepoint)1 Time (java.sql.Time)1 Calendar (java.util.Calendar)1 UUID (java.util.UUID)1 ValueBoolean (org.h2.value.ValueBoolean)1 ValueDate (org.h2.value.ValueDate)1 ValueDouble (org.h2.value.ValueDouble)1 ValueLong (org.h2.value.ValueLong)1 ValueShort (org.h2.value.ValueShort)1 ValueTime (org.h2.value.ValueTime)1