package zcl.todb.db;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class OperationDB {
private ConnectDB db;
public OperationDB(){
this.db=new ConnectDB();
}
public boolean insertImage(String filename){//想数据库中插入图片的方法,filename是图片的名字。
boolean res=false;
Connection con=this.db.getConnectDB();
String sql="insert into image values(?,?)";
try {
PreparedStatement pst=con.prepareStatement(sql);
pst.setString(1, "image");
FileInputStream file=new FileInputStream(filename);
pst.setBinaryStream(2, file, file.available());
pst.executeUpdate();
res=true;
pst.close();
this.db.closeDB(con);
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
System.out.println("文件没有被发现");
} catch (IOException e) {
System.out.println("文件IO流出现错误");
}
return res;
}
public boolean getImage(OutputStream os){//读数据的方法。
boolean res=false;
Connection con=this.db.getConnectDB();
String sql="select * from image where id=?";
try {
PreparedStatement pst=con.prepareStatement(sql);
pst.setInt(1, 5);
ResultSet rs=pst.executeQuery();
if(rs.next()){
InputStream in=rs.getBinaryStream("image");
byte b[]=new byte [1024];
int i=0;
while((i=in.read(b, 0, 1024))!=-1){
os.write(b, 0, i);
}
res=true;
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return res;
}
public static void main(String[] args) {
OperationDB op=new OperationDB();
//if(op.insertImage("D:/temp.png")){//使用上面的方法,进行插入读取SQLServer数据库中的图片
// System.out.println("图片插入成功!!");
//}
try {
FileOutputStream os=new FileOutputStream("d:/temp0.png");
if(op.getImage(os)){
System.out.println("OK");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}