Я работал над некоторыми драйверами jdbc.В моем коде драйвера я должен повторно использовать объект Reader для распределения по 3 различным узлам.После поиска в stackoverflow я понял, что можно использовать BufferedReader с mark () и reset ().Но в этом случае будет использоваться внутренний буфер.Так нет ли другого способа, кроме как с помощью BufferedReader?Я не могу открыть файл, потому что только объект, который я могу обработать, это Reader.
[код клиента - нельзя изменить]
PreparedStatement stmt = conn.prepareStatement("UPDATE t1 SET
i2 = ? WHERE i1 = ? OR i1 = ?");
File file = new File("aaa.txt");
FileReader reader = new FileReader(file);
stmt.setCharacterStream(1, reader, (int)file.length());
stmt.setInt(2, 1);
stmt.setInt(3, 5);
stmt.execute();
[код драйвера]
public void setCharacterStream(int paramIdx, Reader reader, int length) throws SQLException
{
setParameter_node1(paramIdx, reader, Types.CLOB); // node1
setParameter_node2(paramIdx, reader, Types.CLOB); // node2 (How to reset reader??)
setParameter_node3(paramIdx, reader, Types.CLOB); // node3 (How to reset reader??)
}