3
我正在編寫一個方法,通過Web服務接收逗號分隔的文本文件作爲InputStream。我使用以下SQL腳本創建了我的表格:如何使用JDBC將InputStream插入到CLOB中?
CREATE SEQUENCE FILE_NUMBER_SEQ
INCREMENT BY 1
START WITH 1
MINVALUE 1
NOMAXVALUE;
CREATE TABLE FILES
(
ID NUMBER NOT NULL ,
FILE CLOB NOT NULL
);
在我的單元測試中,我使用以下代碼來生成CSV。 B/C的機器管理員權限的測試可以在運行,我不能創建一個文件:
String simulatedCSVFile = new String("col1,col2\\ndata1,data2");
InputStream stream = new ByteArrayInputStream(
simulatedCSVFile.getBytes("UTF-8"));
我的方法目前看起來是這樣的:
public void uploadCSVFile(InputStream stream) {
try {
Connection conn = null;
PreparedStatement preparedStmt = null;
conn = db.getDataSource().getConnection();
conn.setAutoCommit(false);
String sql = "INSERT INTO FILES(ID,FILE) VALUES(FILE_NUMBER_SEQ.NEXTVAL,?)";
preparedStmt = conn.prepareStatement(sql);
preparedStmt.setAsciiStream(1, stream);
int count = preparedStmt.executeUpdate();
}
}
當我執行的方法來測試它當setAsciiStream被調用時,我得到一個讀取「消息有效負載的類型爲:jetty.HttpParser」的異常。
任何想法如何轉換流,以便它可以添加到CLOB的SQL?
我從來沒有聽說過通過Web服務發送InputStreams。你爲什麼不發送字節數組呢? – Lukasz 2011-01-08 23:29:21