现在的位置: 首页 > 综合 > 正文

java 文件上传到数据库为blob

2018年02月17日 ⁄ 综合 ⁄ 共 1201字 ⁄ 字号 评论关闭

其实也没有什么,就拿mysql为例;

现在数据库建表,

让后写一个测试类

经本人测试绝对可用

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

/**
*在mysql数据库里成功测试,并且发现mysql的blob数据库不支持存储图片,只支持
*65535字节以下的本本数据存储。不过其他的大型数据库是支持储存图片的.
*/
public class InsertBlob {

public static void main(String[] args) {

try{
File f = new File("C:\\bsmain_runtime.log");

       long length = f.length();
       FileInputStream fis = new FileInputStream("C:\\bsmain_runtime.log");
       
       byte[] imageBytes=new byte[(int)length];
      
       int byteLength=fis.read(imageBytes, 0, (int)length);
       
       ByteArrayInputStream bais=new ByteArrayInputStream(imageBytes);
       

Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/test","root","java");

PreparedStatement pstmt = null; 

/*
create table mypicture 
(
name varchar(20),
    image blob
);    
*/


pstmt = con.prepareStatement("insert into mypicture(name,image) values(?,?)");

pstmt.setString(1, "001");

pstmt.setBinaryStream(2,bais,byteLength);
pstmt.executeUpdate();

System.out.println("file length:"+length);
System.out.println("byte length:"+byteLength);

System.out.println("插入成功.");
}catch(Exception e){
e.printStackTrace();

}

}

}

抱歉!评论已关闭.