`

com.microsoft.jdbc.base.BasePreparedStatement.setBinaryStream(ILjava/io/InputStr

    博客分类:
  • JAVA
阅读更多
当数据库字段为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中,还没有实现。
将其进行类型转换后,即可正常运行。




分享到:
评论
2 楼 just4you 2013-06-26  
管用,哈哈
1 楼 Mr.lucky 2012-08-01  

相关推荐

    关于在Hibernate中对于Clob,Blob字段的处理方法

    例如,你可以通过`setBinaryStream`和`getBinaryStream`方法读写Blob数据,通过`setCharacterStream`和`getCharacterStream`方法读写Clob数据。 在保存或更新带有Clob和Blob字段的实体时,Hibernate会自动处理这些...

    mysql,sqlserver,oracle三种数据库的大对象存取解析.docx

    存取大对象时,推荐使用`setBinaryStream`方法,这样可以高效且方便地将文件流直接写入数据库。以下是一个Java示例,展示了如何在MySQL中插入和检索大对象: ```java PreparedStatement ps = conn.prepareStatement...

    MySQL的JDBC编程实例.pdf

    MySQL的JDBC编程实例主要涉及以下几个关键知识点: 1. **MySQL数据库**:MySQL是一个关系型数据库管理系统,具备跨平台特性,支持多种操作系统,包括Unix和Windows。它提供了一个多用户、多线程的SQL数据库服务器,...

    利用Java向Oracle中插入图片(BLOB)文件.doc

    OutputStream os = blob.setBinaryStream(1); // 将图片写入BLOB对象 byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); } ...

    使用JDBC4.0操作Oracle中BLOB类型的数据方法

    在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...

    用Struts向MySQL中储存图片

    pstmt.setBinaryStream(2, fis, file.getFile().length()); } else { pstmt.setBytes(2, null); } // 执行SQL pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if ...

    MySql数据库连接+IO

    ### MySQL 数据库连接与 IO 流操作 #### 一、概述 本文将详细介绍如何通过 Java 程序实现与 MySQL 数据库的连接,并利用输入输出流(IO 流)进行图片数据的读写操作。本示例适用于需要在数据库中存储和检索二进制...

    JDBC操纵Oracle数据库中的BLOB字段

    ### JDBC操纵Oracle数据库中的BLOB字段 在现代的数据库应用中,处理二进制大对象(BLOB)数据是一项常见的需求,特别是在存储图像、音频或视频等多媒体内容时。本文将深入探讨如何使用Java Database Connectivity ...

    图片存入数据库 图片 数据库

    ps.setBinaryStream(3, fis, l2); ps.executeUpdate(); // ...关闭流和连接... ``` 第四步,显示图片(ShowImg.jsp)。在这个JSP页面中,我们同样需要加载JDBC驱动并建立数据库连接。通过查询`test_img`表获取图片...

    J2EE-JDBC学习笔记

    ### J2EE-JDBC学习笔记知识点详述 #### JDBC驱动注册的三种方式 在Java开发中,使用JDBC(Java Database Connectivity)与数据库进行交互前,必须先注册对应的数据库驱动。J2EE环境下,通常有以下三种注册方式: ...

    jsp sql server存储过程调用的例子

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 2. **连接数据库**: ```java String url = "jdbc:sqlserver://localhost:1433;databaseName=Book;user=sa;password=;"; Connection ...

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

    **JDBC(Java Database Connectivity)**是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口,它提供了标准的API让Java程序员能够连接到不同类型的数据库系统,进行数据的增删改查操作,以及事务处理...

    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的jdbc驱动

    对于大数据量的处理,Clickhouse提供了流式插入(streaming insert)功能,可以通过BufferedStream或者PreparedStatement的setBinaryStream方法实现。 总之,Clickhouse的JDBC驱动为Java开发者提供了一个便捷的途径...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    pstmt.setBinaryStream(1, fis, (int) file.length()); pstmt.executeUpdate(); fis.close(); ``` 接下来,让我们转向Hibernate,这是一个流行的ORM(Object-Relational Mapping)框架,它允许开发者使用面向对象的...

    在Oracle下开发JAVA程序的问题解答.docx

    在Oracle环境下开发Java程序,经常会遇到与数据库交互的问题,尤其是涉及到JDBC驱动程序的加载以及大数据对象(BLOB)的处理。以下是对这两个关键知识点的详细解析: **1. 加载JDBC驱动程序** 在Java中,加载JDBC...

    jdbcoracle(文件上传)

    这里我们关注的是`jdbcoracle(文件上传)`,这很可能是指使用JDBC(Java Database Connectivity)来操作Oracle数据库,并实现文件上传的功能。以下是对这个主题的详细阐述: JDBC是Java编程语言中用于与各种类型...

    JSP在数据库中存取图片

    String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testdb"; conn = DriverManager.getConnection(url, "sa", "password"); // 准备SQL语句 String sql = "INSERT INTO Images (Username...

Global site tag (gtag.js) - Google Analytics