我得到了一个用于读/写大文本的统一 JDBC 代码。列是 Oracle 上的 CLOB 和 MySQL 上的 TEXT。以下代码
java.sql.Clob aClob = resultSet.getClob(COLUMN_NAME);
java.io.InputStream aStream = aClob.getAsciiStream();
int av = aStream.available();
在 MySQL (Connector/J 5.0.4) 上给出相关值,但在 Oracle (Oracle JDBC driver 11.2.0.2) 上给出零。Clob.length()
幸运的是,两者都给出了正确的值,InputStream.read()
最多 -1 的作品也有,所以还有其他方法可以统一获取数据。
Javadoc 给出了这个奇怪的注释:
InputStream 类的可用方法总是返回 0。
那么哪个司机是对的呢?不,我不想将供应商特定的包拖到代码中:-) 这个问题是 JDBC 中立的。