java图片文件字符串jsp_通过Java或Jsp向数据库存取二进制图片

1 MySQL存储大容量的二进制文件的格式是blob,其实除了图片还可以存别的

2 要向数据库存储二进制的文件一定要把要存储的数据转换成二进制流

废话就不多说了,大家看看代码很容易明白,先来看一个app程序,当然首先您要在数据库中先建立一个用于保存图片的表和相应的列,数据格式为blob

package com.lizhe;

import Java.io.*;

import java.sql.*;

public class PutImg {

public void putimg() {

try {

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url = "JDBC:mysql://localhost/img?user=root&password=root&useUnicode=true&characterEncoding=gbk";

Connection conn = DriverManager.getConnection(url);

Statement stmt = conn.createStatement();

//stmt.execute("insert into imgt (id) values (5)");

stmt.close();

PreparedStatement pstmt = null;

String sql = "";

File file = new File("c:log.jpg");

InputStream photoStream = new FileInputStream(file);

//sql = " UPDATE imgt SET img = ? ";

sql = "INSERT INTO imgtable (img) VALUES (?)";

pstmt = conn.prepareStatement(sql);

pstmt.setBinaryStream(1, photoStream, (int) file.length());

pstmt.executeUpdate();

pstmt.close();

conn.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String args[]){

PutImg pi=new PutImg();

pi.putimg();

}

}

InputStream photoStream = new FileInputStream(file);

可以很清楚的看到我们首先把一个图片文件(当然也可以是别的什么文件)转换成了一个二进制输入流

pstmt.setBinaryStream(1, photoStream, (int) file.length());

这个方法建议大家去查一下API文档,第一个参数是通配符位置没的说,第二个参数是流,这和以往的string类型的参数不太一样,我刚看到的时候也觉得豁然开朗了,但是到这里还没完,不同于以往的字符串参数,这里我们还需要第三个参数来设置这个流的长度,这里也就是这个文件的长度,导出数据库中的sql,一切都清楚了

INSERT INTO `m_diy` VALUES (2,? JFIF HH?? ExifMM* b j ( 1 r 2 ?i H H Ado

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值