2011-10-05 68 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