As requisições setXXXStream realizam um fluxo de dados entre o aplicativo e o banco de dados.
O JDBC permite que o parâmetro IN seja definido como um fluxo de entrada do Java para passagem de uma grande quantidade de dados em frações menores. Quando a instrução é executada, o driver de JDBC faz chamadas repetidas a este fluxo de entrada, lendo seu conteúdo e transmitindo este conteúdo como dados do parâmetro.
para fluxos contendo bytes não interpretados
para fluxos contendo caracteres ASCII
para fluxos contendo caracteres Unicode
O JDBC requer que seja especificado o comprimento do fluxo. O objeto de fluxo passado para estes três métodos pode ser tanto um objeto de fluxo Java padrão, quanto uma subclasse própria do usuário que implementa a interface java.io.InputStream padrão.
Statement s = conn.createStatement();
s.executeUpdate("CREATE TABLE minha_tabela (a INT, b LONG VARCHAR)");
conn.commit();
java.io.File arquivo = new java.io.File("derby.txt");
int comprArquivo = (int) arquivo.length();
// primeiro, criar o fluxo de entrada
java.io.InputStream fluxoEntrada = new java.io.FileInputStream(arquivo);
PreparedStatement ps = conn.prepareStatement(
"INSERT INTO minha_tabela VALUES (?, ?)");
ps.setInt(1, 1);
// definir o valor do parâmetro de entrada como sendo o fluxo de entrada
ps.setAsciiStream(2, fluxoEntrada, comprArquivo);
ps.execute();
conn.commit();