Oracle数据库blob类型(blob类型)
关于Oracle数据库blob类型,blob类型这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!
1、这个是mysql下存取blob字段的一个很简单的类,跟据自己的需要改改就行了/*** Title: ***.java* Project: test* Description: 把图片存入mysql中的blob字段,并取出* Call Module: mtools数据库中的tmp表 * File: C:downloadsluozsh.jpg* Copyright: Copyright (c) 2003-2003* Company: uniware* Create Date: 2002.12.5* @Author: FeiFan* @version 1.0 版本* * * Revision history* Name Date Description* ---- ---- -----------* Chenqh 2003.12.5 对图片进行存取** note: 要把数据库中的Blob字段设为longblob **///package com.uniware;import ***.io.*;import java.util.*;import java.sql.*;public class BlobPros{ private static final String URL = "jdbc:mysql://10.144.123.63:3306/mtools?user=wind&password=123&useUnicode=true"; private Connection conn = null; private PreparedStatement pstmt = null; private ResultSet rs = null; private File file = null; public BlobPros() { } /** * 向数据库中插入一个新的BLOB对象(图片) * * @param infile - 要输入的数据文件 * @throws java.lang.Exception * */ public void blobInsert(String infile) throws Exception { FileInputStream fis = null; try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); conn = DriverManager.getConnection(URL); file = new File(infile); fis = new FileInputStream(file); //InputStream fis = new FileInputStream(infile); pstmt = conn.prepareStatement("insert into tmp(descs,pic) values(?,?)"); pstmt.setString(1,file.getName()); //把传过来的第一个参数设为文件名 //pstmt.setBinaryStream(2,fis,(int)file.length()); //这种方法原理上会丢数据。
2、因为file.length()返回的是long型 pstmt.setBinaryStream(2,fis,fis.available()); //第二个参数为文件的内容 pstmt.executeUpdate(); } catch(Exception ex) { System.out.println("[blobInsert error : ]" + ex.toString()); } finally { //关闭所打开的对像// pstmt.close(); fis.close(); conn.close(); } } /** * 从数据库中读出BLOB对象 * * @param outfile - 输出的数据文件 * @param picID - 要取的图片在数据库中的ID * @throws java.lang.Exception * */ public void blobRead(String outfile,int picID) throws Exception { FileOutputStream fos = null; InputStream is = null; byte[] Buffer = new byte[4096]; try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); conn = DriverManager.getConnection(URL); pstmt = conn.prepareStatement("select pic from tmp where id=?"); pstmt.setInt(1,picID); //传入要取的图片的ID rs = pstmt.executeQuery(); ***.next(); file = new File(outfile); if(!file.exists()) { file.createNewFile(); //如果文件不存在,则创建 } fos = new FileOutputStream(file); is = rs.getBinaryStream("pic"); int size = 0; /* while(size != -1) { size = ***.read(Buffer); //从数据库中一段一段的读出数据 //System.out.println(size); if(size != -1) //-1表示读到了文件末 fos.write(Buffer,0,size); } */ while((size = ***.read(Buffer)) != -1) { //System.out.println(size); fos.write(Buffer,0,size); } } catch(Exception e) { System.out.println("[OutPutFile error : ]" + e.getMessage()); } finally { //关闭用到的资源 fos.close(); rs.close(); pstmt.close(); conn.close(); } } public static void main(String[] args) { try { BlobPros blob = new BlobPros(); //blob.blobInsert("C:\Downloads\luozsh1.jpg"); blob.blobRead("c:/downloads/luozishang.jpg",47); } catch(Exception e) { System.out.println("[Main func error: ]" + e.getMessage()); } }}。
本文分享完毕,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
6月25-28日,由中国进出境生物安全研究会、中国国际旅行卫生保健协会主办,中国青年创业就业基金会支持,中国出入...浏览全文>>
-
胃肠镜检查,听起来可能有些令人不安,但实际上,它可能是生活中的救命稻草。对于一些人来说,定期进行胃肠镜...浏览全文>>
-
6月16日-20日,2025年优秀博士后研究人员(绍兴)研学活动顺利举行。本次活动汇聚了来自全国各地的百余名博士后,...浏览全文>>
-
近日,天津松果生物医疗科技有限公司自主研发的牛跟腱来源去端肽I型胶原蛋白原材料成功通过国家药品监督管理局...浏览全文>>
-
在数字化产业转型的浪潮奔涌之际,病理学正经历着前所未有的革新机遇。奥伟登(Evident)凭借百年光学技术积淀,以...浏览全文>>
-
6月6-8日,CHINAGUT 2025中国肠道大会在宁波国际会议中心隆重举办。大会由南京医科大学第二附属医院、国家消化...浏览全文>>
-
在第28届北京国际口腔展这一行业风向标级盛会上,北京易岭生物科技有限公司(下面简称易岭生物)凭借重磅新品发...浏览全文>>
-
2025款上汽大众ID 4 X在安徽阜阳地区的售价会根据配置和选装包有所不同。基础版车型的厂商指导价大约在20万...浏览全文>>
-
岚图FREE,作为一款集豪华与智能于一体的新能源SUV,正以全新的姿态迎接每一位渴望高品质出行的用户。现在,岚...浏览全文>>
-
安徽阜阳的大众ARTEON 2022新款现已到店,最低售价从34 80万元起,无疑是近期购车的最佳时机。这款车型以其...浏览全文>>