- 浏览: 684191 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Hippyqq:
谢谢很有用,
java中遍历MAP的几种方法 -
XSoftlab:
超详细。。。Java map 详解 - 用法、遍历、排序、常用 ...
java中遍历MAP的几种方法 -
bobo22:
importnet.sf.fmj.ui.application ...
java来调用电脑视频摄像头拍照进行截图 -
qq981378640:
#include <stdio.h>
int ...
c语言中unsigned类型和普通类型间的转换 -
qq981378640:
楼主你这样有点复杂了,直接这样写更好更方便
#include ...
c语言中unsigned类型和普通类型间的转换
当数据库字段为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中,还没有实现。
将其进行类型转换后,即可正常运行。
转:http://blog.csdn.net/darkhorsefly/article/details/6024883
package com.allan;
import java.sql.*;
import java.io.*;
public class Storeblobfile {
public static void main(String[] args) {
try{
FileInputStream file = new FileInputStream("C:\\shanshui.jpg");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=root");
PreparedStatement ps = conn.prepareStatement("insert into user values(?,?,?)");
ps.setString(1,"blob");
ps.setInt(2,23);
ps.setBinaryStream(3, file, file.available());
ps.executeUpdate();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select file from user where name = 'blob'");
while(rs.next()){
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
FileOutputStream fout = new FileOutputStream("C:\\copy.jpg");
int b = -1;
while((b=in.read())!=-1){
fout.write(b);
}
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
转:http://blog.sina.com.cn/s/blog_4b4d59600100boh6.html
hibernate操作mysql的blob数据
package hibernate;
import java.sql.Blob;
public class Blobtest implements java.io.Serializable {
private long id;
private Blob image;
public Blobtest() {
}
public Blobtest(Blob image) {
this.image = image;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public Blob getImage() {
return this.image;
}
public void setImage(Blob image) {
this.image = image;
}
}
测试写入数据:
package hibernate;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class Test {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream("F:/lzx.jpg");
byte[] b = new byte[in.available()];
in.read(b);
in.close();
Blobtest blobTest=new Blobtest();
blobTest.setImage(Hibernate.createBlob(b));
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
session.save(blobTest);
tx.commit();
System.out.print("success");
HibernateUtil.closeSession();
}
}
读出数据:
package hibernate;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class TestWrite {
public static void main(String[] args) throws IOException, SQLException {
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
Blobtest blobTest = new Blobtest();
blobTest = (Blobtest) session.get(Blobtest.class, new Long(1));
System.out.println("qu chu shu ju");
OutputStream out = new FileOutputStream("F:/111.jpg");
out.write(blobTest.getImage().getBytes(1,(int) blobTest.getImage().length()));
out.flush();
out.close();
HibernateUtil.closeSession();
}
}
转:http://www.blogjava.net/dihin/archive/2006/06/25/54956.html
在向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中,还没有实现。
将其进行类型转换后,即可正常运行。
转:http://blog.csdn.net/darkhorsefly/article/details/6024883
package com.allan;
import java.sql.*;
import java.io.*;
public class Storeblobfile {
public static void main(String[] args) {
try{
FileInputStream file = new FileInputStream("C:\\shanshui.jpg");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=root");
PreparedStatement ps = conn.prepareStatement("insert into user values(?,?,?)");
ps.setString(1,"blob");
ps.setInt(2,23);
ps.setBinaryStream(3, file, file.available());
ps.executeUpdate();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select file from user where name = 'blob'");
while(rs.next()){
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
FileOutputStream fout = new FileOutputStream("C:\\copy.jpg");
int b = -1;
while((b=in.read())!=-1){
fout.write(b);
}
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
转:http://blog.sina.com.cn/s/blog_4b4d59600100boh6.html
hibernate操作mysql的blob数据
package hibernate;
import java.sql.Blob;
public class Blobtest implements java.io.Serializable {
private long id;
private Blob image;
public Blobtest() {
}
public Blobtest(Blob image) {
this.image = image;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public Blob getImage() {
return this.image;
}
public void setImage(Blob image) {
this.image = image;
}
}
测试写入数据:
package hibernate;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class Test {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream("F:/lzx.jpg");
byte[] b = new byte[in.available()];
in.read(b);
in.close();
Blobtest blobTest=new Blobtest();
blobTest.setImage(Hibernate.createBlob(b));
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
session.save(blobTest);
tx.commit();
System.out.print("success");
HibernateUtil.closeSession();
}
}
读出数据:
package hibernate;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class TestWrite {
public static void main(String[] args) throws IOException, SQLException {
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
Blobtest blobTest = new Blobtest();
blobTest = (Blobtest) session.get(Blobtest.class, new Long(1));
System.out.println("qu chu shu ju");
OutputStream out = new FileOutputStream("F:/111.jpg");
out.write(blobTest.getImage().getBytes(1,(int) blobTest.getImage().length()));
out.flush();
out.close();
HibernateUtil.closeSession();
}
}
转:http://www.blogjava.net/dihin/archive/2006/06/25/54956.html
发表评论
-
java应用CPU占用100%内存泄漏分析总结
2017-11-28 08:46 588转; http://www.blogjava.net/hank ... -
关于日志的等级 的配置
2014-07-02 16:49 637#这里定义能显示到的最低级别,若定义到INFO级别,则看不到D ... -
Extjs中如何在一行textfield后面加几个字
2014-04-14 16:38 1537{ fieldLabel : '输入框', xtype : ' ... -
数据库中图片的操作(字节流的操作)
2013-12-09 17:26 832package com.fww.util; import j ... -
java 获得本地ip
2013-11-28 18:04 898Enumeration allNetInterfaces = ... -
java多线程下载的例子代码
2013-09-09 16:16 0java多线程下载的例子代码 import java.io.I ... -
java来调用电脑视频摄像头拍照进行截图
2013-09-09 15:34 10424packagecom.pengo.capture; i ... -
java中lucene解析word工具类
2013-09-09 15:32 1061java中lucene解析word工具类(读取word文档并查 ... -
Java 向oracle插入百万数据
2013-09-09 15:30 1554这里的表是没加索引的 ... -
java 写 excel
2013-08-28 10:29 1003import java.io.FileOutputStream ... -
list 排序
2013-06-20 20:43 1092import java.util.Collections; i ... -
java抓取网络图片放到本地
2013-05-07 10:39 4315import java.io.BufferedInputStr ... -
java代码发送JSON格式的httpPOST请求
2013-05-06 13:41 20406package com.test; import java. ... -
java操作excel(HSSF样式) .
2013-04-15 15:06 1996java操作excel(HSSF样式一) import ja ... -
JAVA+Ftpclient操作
2013-03-07 16:35 6591最近再做个ftp上传、下载的项目,用到的包是sun.net.f ... -
自动消除文本框中的空格;js清除空格问题,去除空格问题
2013-03-01 11:22 6323自动消除文本框中的空格;js清除空格问题,去除空格问题 要完成 ... -
java执行Linux命令 .
2012-12-26 09:29 1312/** * 修改Linux目录权限 * @param ... -
UUID生成类
2012-12-16 18:18 2509import java.net.InetAddress; im ... -
java反射获得类的字段和值
2012-12-10 17:26 1643import java.util.HashMap; impo ... -
jquery UI
2012-11-20 22:46 1348jQuery ui 是基于 jquery 基础类库开发的开源的 ...
相关推荐
在Java编程中,有时我们需要将图片等大容量的二进制数据存储到数据库中,MySQL提供了BLOB(Binary Large Object)类型,专门用于存储大块的二进制数据。本实例将详细介绍如何使用Java和MySQL进行图片的存取操作。 ...
Java 对 Blob 的存取 在 Java 中对 Blob(Binary Large OBject)的存取是非常重要的,Blob 是一种二进制大对象,它可以用来存储图片、音频、视频等大型文件。下面是关于 Java 对 Blob 的存取的详细知识点。 什么是...
3. **MySQL存取图片** MySQL提供了BLOB数据类型,类似于Oracle,用于存储二进制大对象。`MySQLUploader.java`文件可能包含处理MySQL数据库中图片或二进制数据的Java代码,使用JDBC连接,加载MySQL驱动,通过...
Mysql 数据库中存取图片的 Java 实现 MySQL 数据库中存取图片的 Java 实现可以通过两种方式实现:一种是将图片单独存放在固定文件夹里,数据库表中对应的字段仅保存该图片的路径和名字 ;另一种是先对图片进行编码...
spring+mybatis下BLOB字段的图片存取代码,仅整理了Controller层的代码,service和dao的代码很简单,所以没有整理
- 下载时,从数据库读取BLOB数据到`BufferedOutputStream`,再通过`FileOutputStream`将缓冲区内容写入到本地文件。 7. **注意事项** - 虽然MySQL支持大对象存储,但频繁地读写大对象可能会对数据库性能产生影响...
"基于Java向MySQL数据库中存取图片" 在本文中,我们将介绍如何使用Java语言向MySQL数据库中存取图片。首先,我们需要了解MySQL数据库中的Blob类型,它是一个二进制类型,通常我们会将图片或音像文件转成二进制再...
总的来说,"mysql-connector-java-5.1.40-bin.jar"是Java开发者与MySQL数据库交互的关键工具,通过它可以轻松地在Java应用中实现数据的存取和管理。正确地配置和使用这个驱动,能够极大地提升开发效率,并确保应用...
2. **图片读取与展示**:掌握如何从数据库中读取图片Blob数据,并将其显示在Web页面上。 #### 开发准备 1. **开发环境配置**:确保具备以下软件环境: - Struts2版本:2.1.8.1 - Hibernate版本:3.x - Spring...
同样,使用ResultSet的getBlob()方法可以从数据库检索BLOB数据。 2. **文件系统存储**:另一种方法是将图片文件存储在文件系统中,然后在数据库中仅存储文件路径。这种方法的优点在于数据库负担较小,但需要管理...
表中至少需要一个字段用于存储图片数据,可以是一个BLOB(Binary Large Object)类型的字段,用于存储二进制数据。例如,创建一个名为`blog_images`的表,包含`id`(主键)和`image_data`(图片数据)两个字段。 3. ...
BLOB用于存储二进制数据,类似于SQL Server的IMAGE和MySQL的BLOB类型;CLOB用于存储字符数据;NCLOB用于存储Unicode字符数据。 Oracle的大对象存取通常使用Oracle的特定API,如OracleCallableStatement和...
在Java编程中,存取数据库中的图片涉及到一系列的步骤和技术,包括数据库操作、二进制数据处理以及IO流的使用。以下将详细讲解这个过程。 首先,我们需要了解基础的Java数据库连接技术。Java通过JDBC(Java ...
在Java编程中,访问数据库存取图片...以上就是使用Java和JDBC访问SQL Server 2000数据库存取图片的基本过程,虽然描述中提到的是SQL Server 2000,但同样的原理适用于其他支持BLOB类型的数据库,如MySQL、Oracle等。
这个过程涉及到的主要技术包括Java编程、数据库操作(特别是MySQL)以及前后端交互。 首先,我们需要理解的是,将图片存储到数据库中通常采用的方法是将图片转换为二进制数据流。这是因为数据库系统更善于处理结构...
例如,Python的pymysql和SQLAlchemy,Java的JDBC,或.NET的Entity Framework,它们都提供了处理BLOB数据的API。 6. **安全性和备份**:存储在数据库中的图像数据应遵循与任何其他敏感数据相同的安全措施,如加密和...
在Java中操作Oracle的`BLOB`类型,通常需要通过`oracle.jdbc.OraclePreparedStatement`和`oracle.jdbc.OracleResultSet`类提供的特定方法,如`setBlob`和`getBlob`,进行数据的读写。这些方法可以更方便地与Oracle...