我正在使用一个简单的界面(在 jsf 1.2 和 rich faces 3.3.2、Oracle 11g R1 中)让用户使用 rich:fileUpload 选择图片并保存在表中。
作为测试,我创建了下表。
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
请问代码错误在哪里。
Thanks.
您指定student_id
as number
,这似乎映射到BigInteger
。参见例如这张桌子 http://docs.oracle.com/cd/B19306_01/java.102/b14188/datamap.htm.
要么你提供一个BigInteger
或者你需要改变类型student_id
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)