* Always use stream interface for retrieving BLOB and LONGVARBINARY columns.

* Check for null reader in streamy LONGVARCHAR code.
This commit is contained in:
hns 2007-06-05 18:28:39 +00:00
parent b783016a6b
commit bf95a9c036

View file

@ -1747,11 +1747,9 @@ public final class NodeManager {
case Types.NUMERIC: case Types.NUMERIC:
BigDecimal num = rs.getBigDecimal(columnNumber); BigDecimal num = rs.getBigDecimal(columnNumber);
if (num == null) { if (num == null) {
break; break;
} }
if (num.scale() > 0) { if (num.scale() > 0) {
newprop.setFloatValue(num.doubleValue()); newprop.setFloatValue(num.doubleValue());
} else { } else {
@ -1768,10 +1766,11 @@ public final class NodeManager {
case Types.BLOB: case Types.BLOB:
case Types.LONGVARBINARY: case Types.LONGVARBINARY:
try { {
newprop.setJavaObjectValue(rs.getBytes(columnNumber));
} catch (SQLException x) {
InputStream in = rs.getBinaryStream(columnNumber); InputStream in = rs.getBinaryStream(columnNumber);
if (in == null) {
break;
}
ByteArrayOutputStream bout = new ByteArrayOutputStream(); ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[2048]; byte[] buffer = new byte[2048];
int read; int read;
@ -1788,6 +1787,10 @@ public final class NodeManager {
newprop.setStringValue(rs.getString(columnNumber)); newprop.setStringValue(rs.getString(columnNumber));
} catch (SQLException x) { } catch (SQLException x) {
Reader in = rs.getCharacterStream(columnNumber); Reader in = rs.getCharacterStream(columnNumber);
if (in == null) {
newprop.setStringValue(null);
break;
}
StringBuffer out = new StringBuffer(); StringBuffer out = new StringBuffer();
char[] buffer = new char[2048]; char[] buffer = new char[2048];
int read; int read;
@ -1820,7 +1823,7 @@ public final class NodeManager {
case Types.CLOB: case Types.CLOB:
Clob cl = rs.getClob(columnNumber); Clob cl = rs.getClob(columnNumber);
if (cl==null) { if (cl == null) {
newprop.setStringValue(null); newprop.setStringValue(null);
break; break;
} }