您的位置:首页 > 数据库

如何将图片插入数据库

2015-11-10 10:05 423 查看
如何将图片,Mp3 ,或是一些二进制类型的数据插入到sqlserver,或是 Oracle 数据库 . 方法是通过流进行操作.

创建一张测试表(sqlserver2000)

create table [pictable] (
[id] [int] identity (1, 1) not null ,
[img] [image] not null
) on [primary] textimage_on [primary]
go


1,插入数据库的方法(sqlserver2000)

this.getConnection() 为获得连接的方法.
public void insertPic(String path){
Connection con = this.getConnection();
String sql = "insert into picTable values(?)" ;
try {
PreparedStatement pstm = con.prepareStatement(sql);
InputStream is = new FileInputStream(path);

pstm.setBinaryStream(1, is, is.available());
int count = pstm.executeUpdate();
if(count>0){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}
is.close();
pstm.close();
con.close();

} catch (Exception e) {
e.printStackTrace();
}
}
2,从数据库中读出来的方法.(sqlserver2000)

public void readPic(int id){
Connection con = this.getConnection();
String sql = "select  * from  picTable where id=?" ;
try {
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1, id);
ResultSet rs = pstm.executeQuery();
rs.next();
InputStream is = rs.getBinaryStream(2);

OutputStream os = new FileOutputStream("f:/temp.jpg");
byte[] buff = new byte[1024];
int len = is.read(buff);
while( len !=-1 ){
os.write(buff);
len = is.read(buff);
}
System.out.println("写入成功");
is.close();
os.close();
pstm.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}


3,插入数据库的方法(Oracle)

public void insertBinary() {
Connection con = MyConnection.getORACLEConnection();
String sql = "insert into testBinary values(?,?)";
try {
con.setAutoCommit(false);
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1, "a1");
pstm.setBlob(2, oracle.sql.BLOB.empty_lob());
int count = pstm.executeUpdate();
pstm.close();
pstm = con.prepareStatement("select  * from testBinary where id=?");
pstm.setString(1, "a1");
ResultSet rs = pstm.executeQuery();
rs.next();
oracle.sql.BLOB blob = (BLOB) rs.getBlob(2);
OutputStream os = blob.getBinaryOutputStream();
FileInputStream fi = new FileInputStream("E:/test.mp3");
byte[] buff = new byte[1024];

int len = fi.read(buff);

while (len != -1) {
os.write(buff);
len = fi.read(buff);
}
pstm = con.prepareStatement(sql);
pstm.setString(1, "a1");
pstm.setBlob(2, blob);
int res = pstm.executeUpdate();
con.commit();
pstm.close();
con.close();

if (res > 0) {
System.out.println("success");
}
} catch (Exception ex) {
ex.printStackTrace();
}

}


4,从数据库中读出来的方法.(Oracle)

public void readerBinaryStream() {
Connection con = MyConnection.getORACLEConnection();
try {
java.sql.PreparedStatement pstm = con.prepareStatement(
"select * from testBinary where id='a1'");
ResultSet rs = pstm.executeQuery();
rs.next();
oracle.sql.BLOB blob = (BLOB) rs.getBlob(2);
InputStream is = blob.getBinaryStream();
FileOutputStream fi = new FileOutputStream("f:/aaaa.mp3");
byte[] buff = new byte[1024];
int len = is.read(buff);
while (len != -1) {
fi.write(buff);
len = is.read(buff);

}
fi.close();

} catch (SQLException ex) {
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: