我正在使用一個簡單的接口(在jsf 1.2和rich faces 3.3.2,Oracle 11g R1中)讓用戶選擇豐富的圖片:fileUpload並保存在表格中。 作爲一項測試,我創建了下表。java.sql.SQLException:ORA-01461:只能將LONG值綁定到插入到LONG列中
CREATE TABLE TEST
(
MIME_TYPE VARCHAR2 (1000),
PHOTO BLOB,
STUDENT_ID NUMBER NOT NULL
)
將圖片保存到BLOB字段的代碼片段如下。
//......From the uploadFile Listener
public void listener(UploadEvent event) throws Exception {
...
item = event.getUploadItem();
...
StudentPhotoDAO dao = new StudentPhotoDAO();
dao.storePhoto(item.getData(),item.getContentType(),studentId);
...
}
//......From the PhotoDAO ..........................
public void storePhoto(byte data[],String mimeType, Long studentId){
{
...
ByteArrayInputStream bis=new ByteArrayInputStream(data);
String query = "update TEST set PHOTO = ? ,MIME_TYPE = ? where STUDENT_ID=?";
pstmt = conn.prepareStatement(query);
pstmt.setAsciiStream(1,(InputStream)bis,data.length);
pstmt.setString(2,mimeType.toString());
pstmt.setLong(3,studentId);
pstmt.executeUpdate();
}
我收到以下錯誤:
java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
哪裏是在代碼中的錯誤,請。
謝謝。
它出現在SQL類型NUMBER與Java類型Long不兼容。 – 2012-07-09 11:15:59
在Oracle中,LONG是文本類型,而不是數字類型。這些答案中的大部分都在錯誤的地方尋找。 – HardlyKnowEm 2014-10-07 15:39:58