`

用JDBC访问二进制类型的数据

阅读更多

JDBC操作二进制类型数据(如图片或压缩包)也是通过IO字节流形式操作

 

public class BlobTest {

 

    public static void main(String[] args) throws SQLException, IOException {

       // create();

       read();

    }

    //查询

    static void read() throws SQLException, IOException {

       Connection conn = null;

       Statement st = null;

       ResultSet rs = null;

       try {

           // 2.建立连接

           conn = JdbcUtils.getConnection();

           // conn = JdbcUtilsSing.getInstance().getConnection();

           // 3.创建语句

           st = conn.createStatement();

           // 4.执行语句

           rs = st.executeQuery("select big_bit  from blob_test");

           // 5.处理结果

           while (rs.next()) {

              // Blob blob = rs.getBlob(1);

              // InputStream in = blob.getBinaryStream();

              InputStream in = rs.getBinaryStream("big_bit");

              File file = new File("IMG_0002_bak.jpg");

              OutputStream out = new BufferedOutputStream(

                     new FileOutputStream(file));

              byte[] buff = new byte[1024];

              for (int i = 0; (i = in.read(buff)) > 0;) {

                  out.write(buff, 0, i);

              }

              out.close();

              in.close();

           }

       } finally {

           JdbcUtils.free(rs, st, conn);

       }

    }

    //添加:

    static void create() throws SQLException, IOException {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           // 2.建立连接

           conn = JdbcUtils.getConnection();

           // conn = JdbcUtilsSing.getInstance().getConnection();

           // 3.创建语句

           String sql = "insert into blob_test(big_bit) values (?) ";

           ps = conn.prepareStatement(sql);

           File file = new File("IMG_0002.jpg");

InputStream in = new BufferedInputStream(new FileInputStream(file));

 

           ps.setBinaryStream(1, in, (int) file.length());

           // 4.执行语句

           int i = ps.executeUpdate();

           in.close();

 

           System.out.println("i=" + i);

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

}

 

分享到:
评论

相关推荐

    Oracle,SQL2000,MYSQL存取图片或二进制数据的功能文件

    `MySQLUploader.java`文件可能包含处理MySQL数据库中图片或二进制数据的Java代码,使用JDBC连接,加载MySQL驱动,通过PreparedStatement执行SQL语句将二进制数据存入数据库。读取时,可以使用ResultSet的...

    图片以二进制存取数据库

    在关系型数据库如MySQL、PostgreSQL、Oracle和SQL Server中,BLOB是一个特殊的数据类型,用于存储大量的二进制数据,例如图片、音频或视频文件。在SQL Server中,这种类型被称为`VARBINARY(MAX)`,它允许存储最多2^...

    SqlServer与Oracle保存与读取图片二进制流

    - **创建表结构**:Oracle提供`BLOB`类型来存储二进制数据。创建`ImagesTable`,包含一个`BLOB`类型的`ImageBlob`字段。 - **保存图片**:类似于SQL Server,将图片读取为字节数组,然后使用`PL/SQL`过程或Java的...

    从数据库中读取二进制图片

    在关系型数据库中,如MySQL、Oracle或SQL Server,通常有特定的数据类型用于存储二进制数据,如BLOB(Binary Large Object)、VARBINARY或IMAGE。这些数据类型能容纳任意大小的二进制流,适合存储图片。 三、从...

    数据库读取二进制图片显示

    创建一个包含图片信息的表,至少需要两个字段:`id`(主键,用于唯一标识图片)和`image_data`(Blob类型,存储图片二进制数据)。 2. **图片上传**:当用户上传图片时,应用需要将图片文件读取为字节流,然后存入...

    JDBC.rar_MYSQL_MYSQL  数据类型_jdbc_jdbc mysql

    4. **二进制类型**:如`BLOB`(二进制大对象)、`BINARY`(二进制字符串)、`VARBINARY`(可变长度二进制字符串),在JDBC中通常映射为`java.sql.Blob`和`byte[]`。 5. **NULL类型**:`NULL`表示字段值为空,它在...

    基于存储过程的MySQL数据库BLOB字段访问.pdf

    在调用存储过程时,我们可以使用ODBC、JDBC等方式来将二进制数据作为参数传递给存储过程。在这个文件中,我们使用了C API的方式来调用存储过程。具体来说,我们可以使用 MySQL 的C API来将二进制数据作为参数传递给...

    apache-activemq-5.15.15二进制包,安装包

    这个“apache-activemq-5.15.15二进制包,安装包”包含了运行和配置ActiveMQ所需的所有组件,方便用户在本地计算机或服务器上快速部署和使用。该版本5.15.15是Apache ActiveMQ的一个稳定版本,提供了许多增强的功能...

    oracle数据类型和对应的JDBC类型.docx

    - `BINARY`、`VARBINARY` 和 `LONGVARBINARY`:在 SQL 标准中定义的二进制数据类型,映射为 `java.sql.Types.BINARY`、`java.sql.Types.VARBINARY` 和 `java.sql.Types.LONGVARBINARY`。 - `RAW`:Oracle 中的二...

    JDBC中的Results相关函数

    - `getBlob()`: 获取Blob类型的数据,返回一个java.sql.Blob对象,代表大二进制数据。 4. 高级类型的方法: - `getBigDecimal()`: 获取Decimal、Numeric类型的数据,返回一个BigDecimal对象,用于精确的浮点数值...

    jdbc课件以及源代码(数据源)

    处理二进制数据时,可以使用`PreparedStatement.setBinaryStream()`将输入流设置为参数,而`ResultSet.getBinaryStream()`则返回一个表示BLOB数据的输入流。通常,我们还需要配合使用`java.io`类库中的`InputStream`...

    使用JDBC数据接口存取Oracle LOB(大对象).pdf

    BLOB用于存储非文本的二进制数据,如图片、音频和视频文件,而CLOB则用于存储大文本数据,如长篇文章或文档。 接着,文章详细讲述了JDBC在访问Oracle数据库中的LOB数据时的作用。JDBC是Java连接关系数据库的标准...

    JDBC学习笔记

    #### 十、用JDBC访问文本和二进制数据 - **文本数据**: - 将文本数据插入数据库。 - 从数据库中读取文本数据。 - **二进制数据**: - 插入图片等二进制数据。 - 从数据库中读取二进制数据。 #### 十一、JDBC...

    映射 SQL 和 Java 类型

    在 Java 应用程序中使用 JDBC 访问数据库时,需要将 SQL 数据类型映射到 Java 类型,以便在 Java 应用程序和数据库之间读写数据。JDBC 提供了 getXXX 和 setXXX 方法集、registerOutParameter 方法和 Types 类来实现...

    利用Java语言实现PB对Oracle中Blob类型的动态操作.pdf

    Blob(Binary Large OBject)是Oracle中的一种数据类型,用于存储大型二进制数据,例如图片、音频和视频等。在实际应用中,Blob类型数据需要使用特殊的处理方法来实现动态访问和存储。 2.Java存储过程 Java存储...

    JDBC Java代码

    这种转换发生在客户端,因此需要在客户端安装一些二进制代码。 3. **类型3:网络协议全Java驱动** - 将JDBC调用转换成独立于任何原生数据库协议的网络协议。中间件软件运行在服务器上,将网络协议转换为原生数据库...

    OracleBlobToJPG

    Oracle数据库是一种广泛应用的关系型数据库管理系统,它支持多种数据类型,包括Blob(Binary Large Object)类型,用于存储大块二进制数据,如图片、视频或文档。本篇文章将详细介绍如何将Oracle数据库中的Blob类型...

    java(jdbc)学习

    JDBC支持各种数据类型,包括基本数据类型(如INT、VARCHAR)、日期类型(DATE、TIME、TIMESTAMP)、大文本类型(CLOB)和大二进制对象(BLOB)。 #### 六、DAO 设计模式 DAO(Data Access Object)设计模式用于...

    java JDBC与数据库访问学习教案.pptx

    JDBC驱动程序是连接Java应用程序和DBMS的桥梁,分为四种类型:JDBC-ODBC桥接驱动、网络纯Java驱动、二进制兼容驱动和直接协议驱动。 - JDBC的基本步骤包括:加载驱动、建立数据库连接、创建Statement或...

Global site tag (gtag.js) - Google Analytics