急,用java读取sqlserver中的image!

tangjr 2005-11-16 09:52:22
请问各位高人,如何在sqlserver中读取一个30兆左右的image(oa_data),如果用sql语句查询image字段直接就内存溢出了
select oa_data from oa_wffiles where id=?;
pstmt.setString(1,id);
执行下面一句话已经出错了,更别提读取了,可能java虚拟机承受不了把几十兆的数据一次加载到内存里:
ResultSet rs = pstmt.executeQuery();
大家有什么解决办法
出错信息如下:
Could not execute query

2005-11-16 09:30:40,062 WARN [net.sf.hibernate.util.JDBCExceptionReporter] - SQL Error: 0, SQLState: null

2005-11-16 09:30:40,062 ERROR [net.sf.hibernate.util.JDBCExceptionReporter] - Out of memory - please use a server side cursor for large result sets:java.lang.OutOfMemoryError, Result set size:105478288, JVM total memory size:66650112

2005-11-16 09:30:40,062 WARN [net.sf.hibernate.util.JDBCExceptionReporter] - SQL Error: 0, SQLState: null

2005-11-16 09:30:40,078 ERROR [net.sf.hibernate.util.JDBCExceptionReporter] - Out of memory - please use a server side cursor for large result sets:java.lang.OutOfMemoryError, Result set size:105478288, JVM total memory size:66650112

2005-11-16 09:30:40,078 ERROR [net.sf.hibernate.util.JDBCExceptionReporter] - Could not execute query

com.jnetdirect.jsql.u: Out of memory - please use a server side cursor for large result sets:java.lang.OutOfMemoryError, Result set size:105478288, JVM total memory size:66650112


...全文
446 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangjr 2005-11-16
  • 打赏
  • 举报
回复
ResultSet rs = pstmt.executeQuery();
中的rs还没查询出来呢,就出错了,更别提
while(rs.next())
请继续指点
子陌红尘 2005-11-16
  • 打赏
  • 举报
回复
while(rs.next())
{
ServletOutputStream sout = response.getOutputStream();
InputStream in = rs.getBinaryStream(1);
byte b[] = new byte[0x7a120];
for(int i = in.read(b); i != -1;)
{
sout.write(b);
in.read(b);
}
sout.flush();
sout.close();
}

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧