Re: JDBC and CLOB retrieval question
On 27 sep, 00:14, Martin Gregorie <mar...@see.sig.for.address> wrote:
I'm using JDBC to access a PostgresQL database which contains TEXT
fields. That's the Postgres equivalent of a CLOB. I'm storing strings in
this field with PreparedStatement.setCharacterStream() and getting them
back with ResultSet.getCharacterStream() - this works well, but the code
I use to read the data back is ugly:
private String retrieveText(ResultSet rs, String column)
throws SQLException
{
StringBuffer buff = new StringBuffer();
try
{
Reader tr = rs.getCharacterStream(column);
char[] cbuf = new char[50];
int n;
while ((n = tr.read(cbuf, 0, 50)) != -1)
buff.append(cbuf);
tr.close();
}
catch (IOException e)
{
....
}
return buff.toString();
}
It works, but is there something a bit more elegant that I should be
using instead of reading chunks via the the loop?
I've probably missed something that should be obvious, so any hints
would be welcome.
--
martin@ | Martin Gregorie
gregorie. | Essex, UK
org |
if you work with a Clob:
Clob data = rs.getClob(column);
InputStream is;
is = data.getAsciiStream();
StringBuffer sb = new StringBuffer();
try {
int ch;
while ((ch = is.read()) > END_OF_STREAM) {
sb.append((char) ch);
}
is.close();
} catch (IOException e) {
throw new SQLException(e.getMessage());
}
sb.toString()
Regards
Peter