2011-10-05 69 views
0

我的数据库表中有一个varchar2类型的column1。 我读从Java用getBinaryStream读取单元格

java.sql.ResultSet r = s.executeQuery("Select * from table1"); 
InputStream is = r.getBinaryStream("column1"); 

我做了什么这个代码后此列。但我无法读取整个值

下面的文本是我的行。

“,因为它能够是文字的集合潜在语义相关的方面相关的能力称为潜在语义索引,这是第一次应用在贝尔实验室在80年代末的文本。的方法,也叫潜在语义分析(LSA)揭示了文本主体中单词使用中潜在的语义结构,以及它如何用于提取文本的含义以响应用户查询,通常称为概念搜索。对一组经过LSI处理过的文档进行概念搜索后,即使结果没有与搜索条件共享一个或多个特定词语,也会返回与搜索条件相同的结果。“

但我可以看到它的只有这部分

,因为它有语义相关条款

相关能力称为潜在语义索引为什么我不能看全了吗?

回答

1

显然你并没有完全阅读InputStream。一个普通的初学者的错误是假设InputStream#available()返回流的长度,然后只有这个字节的数量被读取。这是不正确的。您需要完整阅读,直到InputStream#read()方法返回-1。另见Java IO tutorial。另一个可能的原因是该文本包含换行符,并且您正在使用BufferedReader#readLine()来读取它,并且它只被调用一次。这也是不正确的。您需要循环调用它,直到它返回null

但是,因为这是一个varchar字段,为什么不只是使用ResultSet#getString()

String column1 = r.getString("column1"); 
+0

我使用一个库和我使用的参数作为InputStream的方法,所以我必须使用InputStream。 – user951487

+0

将它作为一个bug报告给库维护者,以便他们修复它。 – BalusC

+0

好吧然后我应该如何使用InputStream?你能举个例子吗? – user951487