我一直在研究某种jdbc驱动程序。 在我的驱动程序代码中,我应该重用Reader对象,以便分发到3个不同的节点。 搜索stackoverflow后,我意识到可以使用带有mark()和reset()的BufferedReader。但是在这种情况下,将使用内部缓冲区。因此,除了使用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??)
}