Blob字段存储在JDBC4.0之前和之后有区别,具体区别看代码。
import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.microsoft.sqlserver.jdbc.SQLServerDataSource; import com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement; import net.sourceforge.jtds.jdbc.Driver.*; /** * @author:kenny dong */ public class StoreBlobDemo { public static void main(String[] args) throws IOException, ClassNotFoundException{ StoreBlobDemo demo = new StoreBlobDemo(); //demo.storeBlobOldVersion(); demo.storeBlob4Version(); } public void storeBlobOldVersion() throws ClassNotFoundException, IOException{ //Store blob type before the jdbc 4.0 String url = "jdbc:jtds:sqlserver://172.20.30.78:1433;databasename=LRIReporterMIS"; Connection con = null; PreparedStatement stmt = null; ResultSet ret = null; try{ Class.forName("net.sourceforge.jtds.jdbc.Driver") ; con = DriverManager.getConnection(url) ; stmt = con.prepareStatement("select * from KennyTest"); ret = stmt.executeQuery(); if(ret.next()){ Blob blob = ret.getBlob("content"); //The blob couldn't be null, if null please insert into something //sqlserver: insert into KennyTest(id,content) values(1,'aaa'); //oracle:insert into KennyTest(id,content) values(1,EMPTY_BLOB()); BufferedWriter output = new BufferedWriter( new OutputStreamWriter(blob.setBinaryStream(1),"UTF-8"),65536); output.write("teststring"); output.flush(); stmt = con.prepareStatement("update KennyTest set content = ? where id= 1"); stmt.setBlob(1, blob); stmt.execute(); } }catch(SQLException se){ se.printStackTrace() ; }finally { if (ret != null) try { ret.close(); } catch(Exception e) {} if (stmt != null) try { stmt.close(); } catch(Exception e) {} if (con != null) try { con.close(); } catch(Exception e) {} } } public void storeBlob4Version(){ //Store blob type in the jdbc 4.0 Connection con = null; SQLServerPreparedStatement cstmt = null; ResultSet rs = null; try { // Establish the connection. SQLServerDataSource ds = new SQLServerDataSource(); ds.setIntegratedSecurity(true); ds.setServerName("172.20.30.78"); ds.setPortNumber(1433); ds.setDatabaseName("LRIReporterMIS"); con = ds.getConnection(); Blob blob = con.createBlob(); BufferedWriter output = new BufferedWriter( new OutputStreamWriter(blob.setBinaryStream(1),"UTF-8"),65536); output.write("teststring"); output.flush(); cstmt = (SQLServerPreparedStatement) con.prepareStatement("insert into KennyTest(id,content) values(?,?)"); cstmt.setInt(1, 3); cstmt.setBlob(2, blob); cstmt.execute(); }catch (Exception e) { e.printStackTrace(); }finally { if (rs != null) try { rs.close(); } catch(Exception e) {} if (cstmt != null) try { cstmt.close(); } catch(Exception e) {} if (con != null) try { con.close(); } catch(Exception e) {} } } }
可以看到4.0之后存储更直接一点更方便。
相关推荐
在关系型数据库中,如Oracle、MySQL、SQL Server等,BLOB字段提供了一种高效的方式,用于处理和存储大数据量的非结构化信息。 ### 判断BLOB字段是否为空的必要性 在实际应用中,判断BLOB字段是否为空对于数据完整...
在这个特定的案例中,"Delphi将图片以二进制方式存储在数据库BLOB字段中"是一个常见的实践,用于高效、安全地保存图片数据。BLOB(Binary Large Object)字段是数据库系统中用来存储大量二进制数据的类型,非常适合...
spring+mybatis下BLOB字段的图片存取代码,仅整理了Controller层的代码,service和dao的代码很简单,所以没有整理
BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据。Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB...
4. **确定数据表和字段**:识别包含BLOB字段的表,以及存储图片文件名和实际图片数据的列。通常,文件名会存储在一个VARCHAR2类型的列中,而图片数据则存储在BLOB列中。 5. **编写SQL或PL/SQL脚本**:创建一个查询...
kettle通过java代码将数据库blob 字段抽取到本地文件
Blob字段用于存储大对象,如图片、视频或二进制文件。在C#中,我们使用`OracleDbType.Blob`类型来处理Blob字段。读取Blob字段时,可以创建一个`OracleBinary`对象,然后使用`GetValue`方法获取Blob数据。写入Blob...
### Oracle Blob字段上传与下载详解 #### 一、概述 在数据库系统中,二进制大对象(Binary Large Object,简称BLOB)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。Oracle数据库支持Blob...
本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在Oracle数据库中,Blob(Binary Large Object)类型用于存储大容量的二进制数据,比如图像、音频...
### Oracle中BLOB字段的读取与操作 #### 一、引言 在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理...
Python如何操作Oracle的Blob字段,
本文介绍了一种基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案,展示了JSP技术、ORACLE数据库BLOB字段、坐标点的存储和读取、图形的显示、排样数据表设计、Samplegraph.jsp的功能、JAVA类的应用等知识点。
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...
本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如DBExpress或ADO。DBExpress是Delphi内置的一个轻量级数据库访问框架,而...
1. **数据准备**:确保ORACLE数据库中的BLOB字段包含所需的数据,并且是完整的。可能需要进行数据验证,以确保所有数据都能被正确读取。 2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,...
本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库中。 1. **Blob字段的理解** Blob是SQL标准定义的一种数据类型,它能够存储大量的二进制数据,如图像、音频文件、PDF文档等。在...
oracle 存读数据库的blob字段 .net有两种方式向Oracle的blob字段中存储图片:
总之,熟练掌握BLOB字段的处理对于任何需要在数据库中存储和检索二进制数据的应用程序开发人员来说都是必不可少的技能。通过遵循上述指南,您可以有效地管理数据库中的BLOB数据,同时保持代码的整洁性和安全性。
本文将详细介绍如何使用Struts结合JDBC操作Oracle数据库中的Blob字段实现文件的保存和读取。 #### 代码分析 根据提供的部分代码示例,我们可以将其分为两个主要部分:文件保存和文件读取。 ##### 文件保存 文件...