Trabalhar com blobs
Você pode incluir objetos binários grandes em seu banco de dados SQLite. Para qualquer objeto com mais de 1 MB, você deve usar objetos InputStream e OutputStream para ler e gravar o blob. Esta técnica evita o problema de armazenar o blob inteiro na memória. Se você não usa um fluxo de entrada e um fluxo de saída, a quantidade de memória dinâmica disponível limita o tamanho de blob que você pode usar.
Para gravar dados em um blob, crie um OutputStream objeto com o método Database.createBlobOutputStream.
Para ler dados de um blob, crie um InputStream objeto com o método Database.createBlobInputStream.
Você pode reservar espaço para a saída de blob usando o método Statement.bindZeroBlob. Este método une uma série de bytes nulos a um parâmetro em uma instrução.
Você deve sempre fechar blobs explicitamente, de forma que eles não esgotem a memória antes de o banco de dados ser fechado.
O código de exemplo a seguir grava um blob em uma tabela e então lê o blob a partir da tabela.
Database d = DatabaseFactory.openOrCreate("hello.db");
d.executeStatement( "CREATE TABLE IF NOT EXISTS t (a INTEGER PRIMARY KEY, b BLOB);" );
d.executeStatement( "INSERT INTO t(b) VALUES( ZEROBLOB( 1024 ) );" );
java.io.OutputStream outputStream =
d.createBlobOutputStream( "t", "b", d.lastInsertedRowID( ) );
for( int i = 0; i < 1024; ++i )
{
outputStream.write( i % 128 );
}
outputStream.close( );
java.io.InputStream inputStream =
d.createBlobInputStream( "t", "b", d.lastInsertedRowID( ) );
for( int i = 0; i < 1024; ++i ) {
if( i % 128 != inputStream.read( ) )
{
fail( "write and read mismatch" );
}
}
inputStream.close( );
d.close();
Estas informações foram úteis? Gostaríamos de receber seus comentários.