当数据库字段为blob类型时 ,我们如果使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法需要注意
在向blob字段类型中插入数据时,要使用javaio的inputstream,读入文件。
而相反从blob字段中读出数据时,同样使用javaio的inputstream,再用javaio的outputstream写入文件。
同clob的示例中的问题
如果在设置字节流的地方不加类型转换的话,如下:
stat.setBinaryStream(1, in, file.length());
则会出现如下错误
Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
at test.jdbc.BlobRW.create(BlobRW.java:38)
at test.jdbc.BlobRW.main(BlobRW.java:24)
后来看了看java和mysql的jdbc驱动两方面的代码,原因明白,原来是用的jdk1.6的版本中,有长度为long类型的方法。
而对应的mysql的jdbc驱动jar中,还没有实现。
将其进行类型转换后,即可正常运行。
分享到:
相关推荐
例如,你可以通过`setBinaryStream`和`getBinaryStream`方法读写Blob数据,通过`setCharacterStream`和`getCharacterStream`方法读写Clob数据。 在保存或更新带有Clob和Blob字段的实体时,Hibernate会自动处理这些...
存取大对象时,推荐使用`setBinaryStream`方法,这样可以高效且方便地将文件流直接写入数据库。以下是一个Java示例,展示了如何在MySQL中插入和检索大对象: ```java PreparedStatement ps = conn.prepareStatement...
MySQL的JDBC编程实例主要涉及以下几个关键知识点: 1. **MySQL数据库**:MySQL是一个关系型数据库管理系统,具备跨平台特性,支持多种操作系统,包括Unix和Windows。它提供了一个多用户、多线程的SQL数据库服务器,...
OutputStream os = blob.setBinaryStream(1); // 将图片写入BLOB对象 byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); } ...
在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...
pstmt.setBinaryStream(2, fis, file.getFile().length()); } else { pstmt.setBytes(2, null); } // 执行SQL pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if ...
### MySQL 数据库连接与 IO 流操作 #### 一、概述 本文将详细介绍如何通过 Java 程序实现与 MySQL 数据库的连接,并利用输入输出流(IO 流)进行图片数据的读写操作。本示例适用于需要在数据库中存储和检索二进制...
### JDBC操纵Oracle数据库中的BLOB字段 在现代的数据库应用中,处理二进制大对象(BLOB)数据是一项常见的需求,特别是在存储图像、音频或视频等多媒体内容时。本文将深入探讨如何使用Java Database Connectivity ...
ps.setBinaryStream(3, fis, l2); ps.executeUpdate(); // ...关闭流和连接... ``` 第四步,显示图片(ShowImg.jsp)。在这个JSP页面中,我们同样需要加载JDBC驱动并建立数据库连接。通过查询`test_img`表获取图片...
### J2EE-JDBC学习笔记知识点详述 #### JDBC驱动注册的三种方式 在Java开发中,使用JDBC(Java Database Connectivity)与数据库进行交互前,必须先注册对应的数据库驱动。J2EE环境下,通常有以下三种注册方式: ...
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 2. **连接数据库**: ```java String url = "jdbc:sqlserver://localhost:1433;databaseName=Book;user=sa;password=;"; Connection ...
### JDBC中操作Blob、Clob等对象实例详解 #### 一、引言 在Java数据库连接(JDBC)中,Blob(Binary Large Object)和Clob(Character Large Object)是用于存储大型二进制对象和文本对象的数据类型。这两种数据...
**JDBC(Java Database Connectivity)**是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口,它提供了标准的API让Java程序员能够连接到不同类型的数据库系统,进行数据的增删改查操作,以及事务处理...
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\data.mdb"; con = DriverManager.getConnection(url, "", ""); st = con.createStatement(); // Access SQL 语句 st.execute...
对于大数据量的处理,Clickhouse提供了流式插入(streaming insert)功能,可以通过BufferedStream或者PreparedStatement的setBinaryStream方法实现。 总之,Clickhouse的JDBC驱动为Java开发者提供了一个便捷的途径...
pstmt.setBinaryStream(1, fis, (int) file.length()); pstmt.executeUpdate(); fis.close(); ``` 接下来,让我们转向Hibernate,这是一个流行的ORM(Object-Relational Mapping)框架,它允许开发者使用面向对象的...
在Oracle环境下开发Java程序,经常会遇到与数据库交互的问题,尤其是涉及到JDBC驱动程序的加载以及大数据对象(BLOB)的处理。以下是对这两个关键知识点的详细解析: **1. 加载JDBC驱动程序** 在Java中,加载JDBC...
这里我们关注的是`jdbcoracle(文件上传)`,这很可能是指使用JDBC(Java Database Connectivity)来操作Oracle数据库,并实现文件上传的功能。以下是对这个主题的详细阐述: JDBC是Java编程语言中用于与各种类型...
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testdb"; conn = DriverManager.getConnection(url, "sa", "password"); // 准备SQL语句 String sql = "INSERT INTO Images (Username...