java.sql.Blob e java.sql.Clob java.sql.Blob java.sql.Clob BLOB data type CLOB data type

No JDBC 2.0, java.sql.Blob é o mapeamento para o tipo BLOB (objeto grande binário) do SQL; java.sql.Clob é o mapeamento para o tipo CLOB (objeto grande caractere) do SQL.

java.sql.Blob e java.sql.Clob fornecem um ponteiro lógico para um objeto grande, em vez de uma cópia completa do objeto. O processa somente uma página de dados na memória por vez. Não há necessidade de processar e armazenar todo o BLOB em memória apenas para acessar alguns poucos bytes iniciais do objeto LOB

O agora suporta os tipos de dado nativos BLOB e CLOB. O também fornece o seguinte suporte para estes tipos de dado:

  • Funcionalidades do BLOB O suporta a interface java.sql.Blob, e os métodos relacionados ao BLOB em e . Os métodos getBlob de CallableStatement não estão implementados.
  • Funcionalidades do CLOB O suporta a interface java.sql.Clob, e os métodos relacionados ao CLOB em e . Os métodos getClob dos procedimentos de CallableStatement não estão implementados.

Para utilizar as funcionalidades java.sql.Blob e java.sql.Clob:

  • Utilizar o tipo BLOB do SQL para armazenamento; Os tipos LONG VARCHAR FOR BIT DATA, BINARY e VARCHAR FOR BIT DATA também funcionam.
  • Utilizar o tipo CLOB do SQL para armazenamento; Os tipos LONG VARCHAR, CHAR e VARCHAR também funcionam.
  • Utilizar os métodos getBlob ou getClob da interface java.sql.ResultSet, para obter um tratador de BLOB ou CLOB para os dados subjacentes.
  • Não podem ser chamados métodos estáticos (Extensão SQL sobre SQL) em qualquer coluna LOB.

Além disso, a conversão entre cadeias e BLOBs não é recomendada, porque a conversão é dependente da plataforma e do banco de dados.

O utiliza cadeias UNICODE (caracteres com 2 bytes), enquanto outros produtos de banco de dados podem utilizar caracteres ASCII (1 byte por caractere). Se forem utilizadas várias páginas de código, cada caractere poderá necessitar de vários bytes. Poderá ser necessário um tipo BLOB maior para acomodar uma cadeia normal no . Devem ser utilizados tipos CLOB para armazenar cadeias.

Restrições de BLOB, CLOB, (tipos-LOB):

  • Os tipos-LOB não podem ser comparados com relação a igualdade (=) e desigualdade (!=, <>).
  • Os valores dos tipos-LOB não são ordenáveis, portanto não são suportados os testes <, <=, >, >=.
  • Os tipos-LOB não podem ser utilizados em índices, ou como colunas de chave primária.
  • Também são proibidas as cláusulas DISTINCT, GROUP BY e ORDER BY nos tipos-LOB.
  • Os tipos-LOB não podem estar envolvidos em conversões implícitas como outros tipos base.

O implementa todos os métodos para estas interfaces do JDBC 2.0, exceto pelos métodos set e get da interface CallableStatement.

Recomendações: Como o tempo de vida de java.sql.Blob e java.sql.Clob termina quando a transação é efetivada, deve ser desativada a auto-efetivação (auto-commit) quando se usa as funcionalidades java.sql.Blob e java.sql.Clob.

Métodos java.sql.Blob do JDBC 2.0 suportados Retorna Assinatura Notas de implementação InputStream getBinaryStream() byte[] getBytes(long pos, int length) São lançadas exceções se pos < 1, se pos for maior que o comprimento, ou se length <= 0. long length() long position(byte[] pattern, long start) São lançadas exceções se pattern == null, se start < 1, ou se pattern for uma matriz de comprimento 0. long position(Blob pattern, long start) São lançadas exceções se pattern == null, se start < 1, se pattern possuir comprimento 0, ou se for lançada uma exceção ao tentar ler o primeiro byte de pattern.
Métodos java.sql.Clob do JDBC 2.0 suportados Retorna Assinatura Notas de implementação InputStream getAsciiStream() Reader getCharacterStream() NÃO SUPORTADO String getSubString(long pos, int length) São lançadas exceções se pos < 1, se pos for maior que o comprimento de Clob, ou se length <= 0. long length() long position(Clob searchstr, long start) São lançadas exceções se searchStr == null, se start < 1, se searchStr possuir comprimento 0, ou se for lançada uma exceção ao tentar ler o primeiro caractere de searchStr. long position(String searchstr, long start) São lançadas exceções se searchStr == null, se start < 1, ou se o padrão for uma cadeia vazia.