怎么样从oracle数据库读出存有大量文字的字段内容,并显示在网页上? 建议用BLOD类型处理大型对象! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 二进制的数据并不是真正的存储在数据库中,在数据库中存储的只是一个路径,所以在读取这些数据的时候要,利用输入,输出流的方式来写入和读取它。下面的例子是写入一个二进制文件到oracle中并读取出它!BolbBean.java-----------------------------------------import java.sql.*;import javax.sql.*;import java.io.*;import oracle.jdbc.driver.OracleResultSet;import oracle.sql.BLOB;public class BlobBean{ private Connection conn; /** *构造方法,创建Connection对象,并且在数据库中添加一个表。 */ public BlobBean()throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); conn =DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:oracle","scott", "tiger");//依据各人的情况来更改 conn.createStatement().execute("create table blobtable(blobvalue blob)"); } /** *写入Blob数据到数据库 */ public void addBlob(String fileName)throws Exception { conn.setAutoCommit(false); Statement stmt = conn.createStatement(); stmt.execute("insert into blobtable values (empty_blob())");//注意写入二进制数据的方法 ResultSet rset = stmt.executeQuery("SELECT blobvalue FROM blobtable FOR UPDATE"); BLOB blob = null; while (rset.next()) { blob = ((OracleResultSet) rset).getBLOB(1); System.out.println(blob.length()); } File binaryFile = new File(fileName); System.out.println(fileName+"'s length = " + binaryFile.length()); FileInputStream instream = new FileInputStream(binaryFile); OutputStream outstream = blob.getBinaryOutputStream(); int chunk = blob.getChunkSize(); System.out.println("chunk size = " + chunk); byte[] buffer = new byte[chunk]; int length = -1; while ((length = instream.read(buffer)) != -1) outstream.write(buffer, 0, length); instream.close(); outstream.close(); conn.commit(); } /** *从数据库读取blob数据,并且保存在文件系统。 */ public void readBlob(String fileName)throws Exception { conn.setAutoCommit(false); Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery("SELECT blobvalue FROM blobtable"); BLOB blob = null; while (rset.next()) { blob = ((OracleResultSet) rset).getBLOB(1); System.out.println(blob.length()); } FileOutputStream file_out = new FileOutputStream(new File(fileName)); InputStream blob_in = blob.getBinaryStream(); int temp; while((temp=blob_in.read())!=-1) file_out.write(temp);//读取数据、写入文件系统 file_out.close(); blob_in.close(); conn.commit(); } }testblob.jsp--------------------------------------- <%@ page contentType="text/html; charset=gb2312" %><jsp:useBean id="blobtest" class="BlobBean" scope="page"/><%try{ blobtest.addBlob("c:\\case.mdl");//写一个存在的文件路径 blobtest.readBlob("c:\\case2.mdl"); out.println("sucess!");}catch(Exception e){ out.println(e); e.printStackTrace();}%> easyui问题 菜鸟求助 tomcat6 域名能访问,ip却不能访问 document.all的用法 一个过滤器验证用户登入的,大家帮我看看 提问: web中singleton的范围,spring中singleton的范围 response.setContentType下载小问题 如果我要实现这些功能,我需要学习哪些知识?克服哪些难点? 本人有一个JSP的工程导入Eclipse里项目文件夹有一个叉怎么也用不了啊 Struts取值的问题!谢谢 网站信息发布系统问题?? 一个新问题? JSP如何使用的javabean?请给出完整事例!
下面的例子是写入一个二进制文件到oracle中并读取出它!
BolbBean.java
-----------------------------------------
import java.sql.*;
import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.OracleResultSet;
import oracle.sql.BLOB;
public class BlobBean
{
private Connection conn;
/**
*构造方法,创建Connection对象,并且在数据库中添加一个表。
*/
public BlobBean()throws Exception
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn =DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:oracle","scott",
"tiger");//依据各人的情况来更改
conn.createStatement().execute("create table blobtable(blobvalue blob)");
}
/**
*写入Blob数据到数据库
*/
public void addBlob(String fileName)throws Exception
{
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
stmt.execute("insert into blobtable values (empty_blob())");//注意写入二进制数据的方法
ResultSet rset = stmt.executeQuery("SELECT blobvalue FROM blobtable FOR UPDATE");
BLOB blob = null;
while (rset.next()) {
blob = ((OracleResultSet) rset).getBLOB(1);
System.out.println(blob.length());
}
File binaryFile = new File(fileName);
System.out.println(fileName+"'s length = " + binaryFile.length());
FileInputStream instream = new FileInputStream(binaryFile);
OutputStream outstream = blob.getBinaryOutputStream();
int chunk = blob.getChunkSize();
System.out.println("chunk size = " + chunk);
byte[] buffer = new byte[chunk];
int length = -1;
while ((length = instream.read(buffer)) != -1)
outstream.write(buffer, 0, length);
instream.close();
outstream.close();
conn.commit();
}
/**
*从数据库读取blob数据,并且保存在文件系统。
*/
public void readBlob(String fileName)throws Exception
{
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT blobvalue FROM blobtable");
BLOB blob = null;
while (rset.next()) {
blob = ((OracleResultSet) rset).getBLOB(1);
System.out.println(blob.length());
} FileOutputStream file_out = new FileOutputStream(new File(fileName));
InputStream blob_in = blob.getBinaryStream();
int temp;
while((temp=blob_in.read())!=-1)
file_out.write(temp);//读取数据、写入文件系统
file_out.close();
blob_in.close();
conn.commit();
}
}
testblob.jsp
---------------------------------------
<%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="blobtest" class="BlobBean" scope="page"/>
<%
try{
blobtest.addBlob("c:\\case.mdl");//写一个存在的文件路径
blobtest.readBlob("c:\\case2.mdl");
out.println("sucess!");
}
catch(Exception e){
out.println(e);
e.printStackTrace();
}
%>