把二进制文件存入数据库
1。把二进制文件存放到字节数组中。
2。将字节数组转化为blob字段,存入Oracle数据库中。
1. public void test055() throws IOException {
File inFile = new File("d:\\Chrysanthemum.jpg");
FileInputStream fileInputStream = new FileInputStream(inFile);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
//转化为字节数组流
while ((i = fileInputStream.read()) != -1) {
byteArrayOutputStream.write(i);
}
fileInputStream.close();
// 把文件存在一个字节数组中
byte[] filea = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
String encoding = "ISO-8859-1";
String fileaString = new String(filea, encoding);
System.out.println(fileaString);
// 写入文件
FileOutputStream fileOutputStream = new FileOutputStream("d:/b.png");
fileOutputStream.write(fileaString.getBytes(encoding));
fileOutputStream.flush();
fileOutputStream.close();
}
2. MakeCardInfo cardInfo=new MakeCardInfo();
cardInfo.setCardNo("6214539500037565");
cardInfo.setCardIndex("00");
cardInfo.setCardDataType("2");
cardInfo.setBatchNo("27");
cardInfo.setChannelNo("02");
cardInfo.setStatus("01");
cardInfo.setDgiFileName("dgi");
cardInfo.setCardData(filea);
cardInfo.setTranDate("20140417");
cardInfo.setDownloadCount("0");
MakeCardInfoDaoImpl dao=new MakeCardInfoDaoImpl(SaveDpInfoStep.getConn());
dao.insertMakeCardInfo1(cardInfo, filea.length);
insertMakeCardInfo1方法代码如下:
public int insertMakeCardInfo1(MakeCardInfo info,int position) throws Exception{
PreparedStatement ps = null;
InputStream in = null;
try {
ps = connection.prepareStatement(_INSERT);
ps.setString(1, info.getCardNo());
ps.setString(2, info.getCardIndex());
in = new ByteArrayInputStream(info.getCardData()) ;
ps.setBinaryStream(3, in, position); //position 就是字节数组的长度
ps.setString(4,info.getDownloadCount());
ps.setString(5, info.getCardDataType());
ps.setString(6, info.getStatus());
ps.setString(7, info.getChannelNo());
ps.setString(8, info.getTranDate());
ps.setString(9, info.getBatchNo());
ps.setString(10, info.getDgiFileName());
return ps.executeUpdate();
} catch (Exception e) {
throw e;
}finally{
if(in!=null){
in.close();
}
if(ps!=null)
ps.close();
if(connection!=null)
connection.close();
}
}
注意:
(1)使用ByteArrayOutputStream 来把二进制流转化为字节数组流;
(2)把字节数组转化为String类型时,一定要使用ISO-8859-1编码;
String encoding = "ISO-8859-1";
String fileaString = new String(filea, encoding);
(3)通过字符串获取字节数组时,一定要使用ISO-8859-1编码:
fileOutputStream.write(fileaString.getBytes(encoding));
分享到:
相关推荐
通过将图片转换为二进制数据并存储在数据库中,可以实现数据的高效管理,同时保持程序的稳定性和性能。这个过程中的关键是理解如何使用TStream对象以及如何在数据库组件中正确处理BLOB字段。通过深入学习和实践,...
`MySQLUploader.java`文件可能包含处理MySQL数据库中图片或二进制数据的Java代码,使用JDBC连接,加载MySQL驱动,通过PreparedStatement执行SQL语句将二进制数据存入数据库。读取时,可以使用ResultSet的...
在关系型数据库如MySQL、PostgreSQL、Oracle和SQL Server中,BLOB是一个特殊的数据类型,用于存储大量的二进制数据,例如图片、音频或视频文件。在SQL Server中,这种类型被称为`VARBINARY(MAX)`,它允许存储最多2^...
本篇文章将基于提供的代码片段来详细解析如何使用Java语言实现从Oracle数据库中存储与读取图片的功能。 #### 一、创建存储图片的表 在开始之前,我们需要在Oracle数据库中创建一个可以存储图片数据的表。根据描述...
标题“怎样用VBA将EXCEL中的图片存入Oracle数据库(利用临时文件方式)”涉及到的知识点主要包括: 1. **VBA(Visual Basic for Applications)编程**:VBA是Microsoft Office套件中的一种内置编程语言,允许用户...
用户可以通过这个工具方便地将图片存入Oracle数据库,也可以读取已存储的图片。 6. **优缺点**: - **CLOB**:优点是跨平台兼容性好,因为Base64编码是标准的文本格式;缺点是占用的空间比原始二进制数据大,且...
在Oracle数据库中,可以使用SQL语句创建一个名为`test_img`的表,包含三个字段:`id`用于唯一标识图片,`name`存储图片名称,`pic`则用来存储图片的二进制数据。创建表的SQL语句如下: ```sql CREATE TABLE test_...
程序执行功能的简单说明:在客户端的浏览器界面上输入一个客户端的文件名(本文以pdf类型文件为例),将该文件的全部内容做为一个大对象的数据存储在服务器端的Oracle数据库中。任何一个客户端都可以通过浏览器再次...
本主题将深入探讨如何利用ADO(ActiveX Data Objects)技术将数组转换为二进制数据并存入数据库中。 首先,ADO是微软开发的一种数据访问接口,它提供了一种标准的方式来访问各种数据源,如SQL Server、Access或...
当我们谈论“将图片存入数据库,并从数据库中读取”时,我们实际上是在讨论一种数据存储策略,这种策略允许我们将图像文件作为二进制数据存储在数据库中,并能够按需检索出来。这种做法有其优点,例如方便数据集成和...
这篇文章将深入探讨如何在数据库中处理二进制图片,并提供一种显示它们的方法,供学习者参考。 首先,我们要理解图片本质上是二进制数据,通常以.jpg、.png或.gif等格式存在。这些文件由一系列0和1组成,代表图像的...
7. 显示图片:将从数据库中读取的二进制数据转换回图片格式,可以通过创建一个新的图片对象,将字节数组传递给构造函数,如C#中的`Image.FromStream()`或Java的`ImageIO.read(new ByteArrayInputStream(bytes))`。...
在使用PowerBuilder (PB) 9.0进行应用程序开发时,有时我们需要将文件保存到数据库中,以便于数据管理和检索。这个过程涉及到文件操作、数据库交互以及数据存储格式的转换。下面将详细介绍如何在PB9.0中实现“把文件...
标题中的“使用JDBC存取ORACLE数据库中的图片数据”是指使用Java的JDBC(Java Database Connectivity)API来存取Oracle数据库中存储的图像数据。Oracle数据库是一个流行的关系型数据库系统,它提供了LONG RAW和BLOB...
首先,我们需要在Oracle数据库中创建一个用于存储图片的表。表名为`GAMBAR`,其中有一个BLOB类型的字段`GAMBAR_BIN`,用于存储二进制大对象,即图片数据。创建表的SQL语句如下: ```sql CREATE TABLE GAMBAR ...
本示例主要涉及的是如何将图片通过BASE64编码加密后存入数据库的Blob类型字段,并能从数据库中取出这些数据再还原成原始图片。以下是相关知识点的详细说明: 1. **BASE64编码**:BASE64是一种用于将二进制数据转换...
本文主要探讨的是如何在Oracle数据库中有效地存储多媒体数据、文档和其他大文件,这些数据通常包含大量的字节,如视频、图片、音频和文档等。 在Oracle数据库中,大型数据对象(Large Data Object, LDO)是指那些...
本主题将详细探讨如何将BMP(Bitmap)类型的图片存入数据库,并能从数据库中导出到MFC控件上显示。我们将涵盖以下几个关键知识点: 1. BMP文件格式:BMP是Windows操作系统中的一种位图文件格式,它包含未经压缩的...
本文将详细讲解如何操作Oracle数据库中的Blob字段,以实现图片的存储和读取。Blob(Binary Large Object)字段类型用于存储大量的二进制数据,如图片、文档等。 首先,确保已安装了Oracle的客户端库,如ODP.NET ...
本篇将详细介绍如何使用Java将MP3等二进制文件存入Oracle数据库中的BLOB字段。 首先,我们需要了解Oracle JDBC驱动,这是Java与Oracle数据库交互的基础。Oracle提供了一个名为ojdbc的JDBC驱动,它可以连接到Oracle...