//BLOB写入操作
package zxt.xsfw.action.ceshi; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import zxt.wai.action.ProtectedAction;
import zxt.wai.sys.Constant;
import zxt.wai.sys.RequestHelper;
import zxt.xsfw.init.WebInitLoad; import java.io.FileInputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException; import oracle.sql.BLOB;
import java.sql.Statement; public class BlobceshiAction extends ProtectedAction{ public boolean postProcess(HttpServletRequest request, HttpServletResponse response) {
return false;
} public boolean process(HttpServletRequest request, HttpServletResponse response) {
String name = RequestHelper.getStrParam(request, "NAME");//请求中读取参数
String img = RequestHelper.getStrParam(request, "IMG");//请求中读取参数 Connection conn=null;
Statement stm=null;
ResultSet rs=null;
BLOB blob = null;
FileInputStream fin=null;
OutputStream out=null;
try{
conn = WebInitLoad.getSysDBTookit().createConnection();
stm = conn.createStatement();
conn.setAutoCommit(false);
String sql = "insert into TEST values('1','"+name+"',EMPTY_BLOB())";
stm.executeUpdate(sql); rs = stm.executeQuery("SELECT img FROM TEST WHERE id='1' FOR UPDATE "); fin = new FileInputStream(img);
byte[] blobBuf = new byte[(int)fin.available()];
fin.read(blobBuf);
fin.close(); if(rs.next()) {
System.out.println(blobBuf.length);//以byte为单位
blob = (oracle.sql.BLOB)rs.getBlob(1);
out = blob.getBinaryOutputStream();
out.write(blobBuf);//写入到BLOB中去
out.close();
conn.commit();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
rs.close();
stm.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
setReturnValue("<script>alert(\"ok!BLOB保存成功!\");history.back();</script>");
setReturnType(Constant.TARGET_TYPE_CONTENT);
return false;
} }

//BLOB写入操作

package zxt.xsfw.view.ceshi;


import org.enhydra.xml.xmlc.html.HTMLObject;


import zxt.wai.sys.XmlcViewFactory;
import zxt.wai.view.ProtectedXView;
import zxt.xsfw.init.WebInitLoad;


import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.sql.BLOB;


public class ReadBlobceshiXView {


public boolean render() {

Connection conn=null;
Statement stm=null;
ResultSet rs=null;
try {
conn = getCon();
stm = conn.createStatement();
rs = stm.executeQuery("select img from TEST where id='1'");
if(rs.next()){
BLOB blob = (BLOB)rs.getBlob(1);
InputStream is = blob.getBinaryStream();
FileOutputStream os = new FileOutputStream("c:\\1.jpg");
int b;
byte[] buffer = new byte[1024];
while( (b=is.read(buffer)) != -1){
os.write(buffer,0,b);//把BLOB信息写到文件流中
}
is.close();
os.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
stm.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}

public static void main(String[] orgs){
new ReadBlobceshiXView().render();
}

public static Connection getCon() {
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@localhost:1521:ora9i";
String user = "";
String password = "";
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}


}

 

BLOB的读写操作的更多相关文章

  1. oracle读写文件--利用utl_file包对磁盘文件的读写操作

    oracle读写文件--利用utl_file包对磁盘文件的读写操作 摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做, ...

  2. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  3. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  4. App.Config详解及读写操作

    App.Config详解及读写操作   App.Config详解 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而 ...

  5. 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)

    算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...

  6. io流对文件读写操作

    public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedRead ...

  7. PHP文件读写操作之文件写入代码

    在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...

  8. INI 文件的读写操作

    在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...

  9. Android 对 properties文件的读写操作

    -. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...

随机推荐

  1. OLR文件丢失的恢复

    11.2.0.1的RAC中,rac1和rac2 一.OLR有备份的情况 1.手动将rac1中的olr重命名,模拟丢失 mv rac1.olr rac1.olr.test 2.重新启动crs ./crs ...

  2. gephi——怎样上传节点表格而且为节点设定颜色类型

    使用gephi过程中出现两个问题: 一.节点编号不安给定的属性(Nodes)编号,而是莫名其妙地从1w+開始 解决:数据列名中需包括 id.则默觉得节点编号 二.怎样在上传的数据中指定节点颜色 须要一 ...

  3. PHP获取数组长度的方法 函数参数的比较

    在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...

  4. Linux - 硬件杂讲

    先死后活,先记住,再灵活运用. 拍个快照,方便系统坏了,找回. 硬件知识,cpu,内存,i/o总线,电源,机箱. 需求:公司需要做一个内容发布网站,展示公司的信息,你需要选择符合公司要求的Web服务器 ...

  5. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊

    摘自:http://ramsey16.net/%E8%81%9A%E7%B1%BB%EF%BC%88%E4%B8%89%EF%BC%89fuzzy-c-means/ 经典k-均值聚类算法的每一步迭代中 ...

  6. [JavaEE] Apache Maven 入门篇(下)

    http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-2-405568-zhs.html 作 ...

  7. MessageDigest的功能及用法(加密解密)

    MessageDigest的功能及用法 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度 ...

  8. JsonResult

    注意:如果有大量的json数据要处理,建议使用ASP .NET Web API框架处理,专门用来处理json数据交换并提供跨平台访问能力的 ConentType设置为application/json ...

  9. 有关PHP里的Cookie

    会话技术:Cookie,Session: Cookie是客户端技术,服务器把每个用户的数据以Cookie的形式保存在用户各自的浏览器,当用户用浏览器再次访问服务器的web资源时则会带着各自的数据去了: ...

  10. Css 分类 属性 选择器

    Css 层叠样式表 美化页面的小工具 分类: 内联 (行内)在标签内部以属性的形式呈现,属性名style 内嵌 head标签内以标签形式呈现,标签名style 外部 head标签内 加link标签 引 ...