操作BLOB数据。
代码如下:
package com.j2ee14.ch7;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class BlobTest {
Connection conn= null;
public void addBlob(){
try{
PreparedStatement pstmt=conn.prepareStatement("insert into blobtest values(1,?)");
File file=new File("c:\\test.jpg");
FileInputStream fis=new FileInputStream(file);
pstmt.setBinaryStream(1, fis,(int)file.length());
pstmt.executeUpdate();
pstmt.close();
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void createTable(){
try{
conn.createStatement().execute("create table blobtest(id int,pic blob,"+"constraint pk_blobtest primary key(id));");
}catch(Exception e){
e.printStackTrace();
}
}
public void getBlob(){
try{
Statement stmt= conn.createStatement();
ResultSet rst=stmt.executeQuery("select * from blobtest where id=1");
rst.next();
Blob blob=rst.getBlob("pic");
FileOutputStream out = new FileOutputStream(new File("c:/k.jpg"));
InputStream in= blob.getBinaryStream();
int i;
while((i=in.read())!= -1)
out.write(i);
in.close();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args)throws Exception {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
BlobTest test=new BlobTest();
test.conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/j2ee14","root","123456");
test.createTable();
test.addBlob();
test.getBlob();
}
}
执行程序前c盘下需要放置一个test.jpg图片
执行程序,在执行了程序后,数据库中会有一个blobtest的数据库,并且里面有一行数据
同时在c盘下会产生一个k.jpg的图片,该图片和test.jpg相同