JDBC处理大数据(大二进制数据的存储和读取)
1.对于MySQL中的BLOB类型,可调用如下方法设置:
PreparedStatement.setBinaryStream(i, inputStream, length);
2.对MySQL中的BLOB类型,可调用如下方法获取:
InputStreamin = resultSet.getBinaryStream(i);
InputStream in = resultSet.getBlob(i).getBinaryStream();
实例:
package com.hbsi.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.xml.sax.InputSource;
import com.hbsi.utils.DBManager;
public class Demo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
Demo2 d=new Demo2();
d.insert();
}
//大二进制数据存入到数据库
public void insert(){
Connection con=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
con=DBManager.getConnection();
String sql="insert intotestblob (images) value(?)";
st=con.prepareStatement(sql);
//流
//Stringpath=Demo1.class.getClassLoader().getResource("readerme.txt").getPath();
File f=new File("1.jpg");
st.setBinaryStream(1, new FileInputStream(f),f.length());
int result=st.executeUpdate();
if(result>0){
System.out.println("ok");
}
else{
System.out.println("no");
}
} catch (SQLException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}finally{
DBManager.release(con, st, rs);
}
}
//大二进制的读取
public void find(){
Connection con=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
con=DBManager.getConnection();
String sql="selectimages from testblob where id=1";
st=con.prepareStatement(sql);
rs=st.executeQuery();
if(rs.next()){
InputStream fis=rs.getBinaryStream("images");
byte[] buff=new byte[1024];
int len=0;
FileOutputStream fos=new FileOutputStream("3.jpg");
while((len=fis.read(buff))>0){
fos.write(buff,0,len);
}
fos.close();
fis.close();
}
} catch (SQLException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}finally{
DBManager.release(con, st, rs);
}
}
}