例子代码
Class.forName("com.mysql.jdbc.Driver");
//System.out.print("加载驱动完毕");
String url="jdbc:mysql://localhost:3306/studentmanager";
String username="root";
String password="root";
String sql1="select * from images";
Connection conn=DriverManager.getConnection(url,username,password);
//创建一个 Statement 对象来将 SQL 语句发送到数据库。
PreparedStatement pst=conn.prepareStatement(sql1);
ResultSet rs=pst.executeQuery();
rs.next();
//从ResultSet中得到Blob的对象
Blob b=rs.getBlob("img");
//通过Blob对象的getBinaryStream得到字节流
InputStream fis= b.getBinaryStream();
//构建字节流的缓存BufferedInputStream的对象
BufferedInputStream bis=new BufferedInputStream(fis);
//准备一个FileOutputStream输出流对象
FileOutputStream fos =new FileOutputStream("d://2.jpg");
//准备一个字节数组,以备缓存读对象BufferedInputStream,每次读这些字节长度
byte[] be=new byte[1024];
//每读1024个字节就向FileOutputStream写1024个字节,直到写完。
while((bis.read(be))!=-1){
fos.write(be);
}
fos.flush();
fos.close();
fis.close();
bis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void write(){
try {
Class.forName("com.mysql.jdbc.Driver");
//System.out.print("加载驱动完毕");
String url="jdbc:mysql://localhost:3306/studentmanager";
String username="root";
String password="root";
String sql1="insert into images values (?)";
Connection conn=DriverManager.getConnection(url,username,password);
//创建一个 Statement 对象来将 SQL 语句发送到数据库。
PreparedStatement pst=conn.prepareStatement(sql1);
File file=new File("e://1.jpg");
int len=(int)file.length();
FileInputStream fis=new FileInputStream(file);
pst.setBinaryStream(1,fis,len);
int count=pst.executeUpdate();
if(count>0){
System.out.println("执行成功");
}else{
System.out.println("执行未返回任何影响行数");
}
} catch (Exception ex) {
ex.printStackTrace();
}
其实就是以二进制形式存储在数据库了,此方法不推荐了因为数据多了不方便处理了并且数据库会很大查询也比较慢了.