主题:写BLOB字段出现问题,解决不了 你可以在JAVA中使用DB中的类似于appendblob,getblob一类的函数来试一试。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.csdn.net/expert/topic/83/83096.shtm 你用的是什么数据库,我用oracle没出国什么问题 请问skyyoung(路人甲),如果blob或clob的数据过大,setBinaryStream(1,fis,file.length());中file.length()是int型的,长度不够怎么办? 你写的没错了,在 OutputStream os = b.getBinaryOutputStream(); os.write(byteArr); os.close(); 之前当然为null了如果是其它原因,你可以试试在插入时,给Blob字段插入一个小于4k的任意值,或是empty_blob()了 大家看一看这段代码public void writeBlob(String picID, String fileName) { File file = new File(fileName); FileInputStream fis = null; PreparedStatement ps = null; try { fis = new FileInputStream(file); ps = connection.prepareStatement("insert into pictest values (?,?)"); ps.setString(1, picID); ps.setBinaryStream(2, fis, (int)file.length()); ps.execute(); } catch (Exception e) { System.out.println("Exception at PictureDb.writeBlob: " + e); } finally { try { ps.close(); fis.close(); } catch (Exception e) { } }}出现下面的异常java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column import oracle.sql.*;BLOB b = (BLOB) rs.getBlob("pic"); ://此处取得的BLOB b总是null OutputStream os = b.getBinaryOutputStream(); os.write(byteArr); os.close(); 你的pic字段值为null估计你是用Insert into tablename(....., pic) values(....., null);这种方式插入的记录,换成Insert into tablename(....., pic) values(....., empty_blob());再次更新就不会有如下错误了! 求给我讲解下红色部分的代码 监听通常以何种方式实现 package包语句是作什么用的? 新手 java TextField内容相对路径存入.txt文件中 在以字符形式读取出来..... 如何在程序中实现停顿几秒的功能?为何输出到屏幕可以,输出在文本框就不行呢? 急!!!!!!!,关于字符串解析 的一个问题,谢谢! 连接SQL SERVER数据库的问题!! 我要学java,请大侠们指点! 关于socket的I/O问题!!!急!!! 求助 StringTokenizer 怎么用? applet里怎么连接数据库啊,jdbc好象要用到odbc,有点麻烦,有什么更好的办法吗
OutputStream os = b.getBinaryOutputStream();
os.write(byteArr);
os.close();
之前当然为null了
如果是其它原因,你可以试试在插入时,给Blob字段插入一个小于4k的任意值,或是empty_blob()了
public void writeBlob(String picID, String fileName) {
File file = new File(fileName);
FileInputStream fis = null;
PreparedStatement ps = null; try {
fis = new FileInputStream(file);
ps = connection.prepareStatement("insert into pictest values (?,?)");
ps.setString(1, picID);
ps.setBinaryStream(2, fis, (int)file.length());
ps.execute();
} catch (Exception e) {
System.out.println("Exception at PictureDb.writeBlob: " + e);
} finally {
try {
ps.close();
fis.close();
} catch (Exception e) {
}
}
}出现下面的异常
java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
BLOB b = (BLOB) rs.getBlob("pic");
://此处取得的BLOB b总是null
OutputStream os = b.getBinaryOutputStream();
os.write(byteArr);
os.close();
估计你是用Insert into tablename(....., pic) values(....., null);
这种方式插入的记录,换成
Insert into tablename(....., pic) values(....., empty_blob());
再次更新就不会有如下错误了!