bonsoir
j'ai un probleme au niveau de la sauvegarde et de chargement d'une image a partir d'une base de donnée.l'insertion se fait avec succés mais lors du chargement de cette image a partir de la Base je trouve qu'elle est vide.
j'ai utilisé le type Blob pour sauvgarder l'image
ma table est la suivante
Create table image (
name varchar2(50),
img Blob);
l'insertion se fait avec succés mais lors du chargement de cette image je trouve qu'elle est vide
le code du sauvegarde et du chargement ci dessous :
public void sauveIMG(String location, String name) throws Exception
{
OracleDataSource ods = null;
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
// Create DataSource and connect to the local database
ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@//localhost:1521/orcl");
ods.setUser("SCOTT");
ods.setPassword("TIGER");
conn = ods.getConnection();
File monImage = new File(location);
FileInputStream istreamImage = new FileInputStream(monImage);
try
{
PreparedStatement ps = conn.prepareStatement("insert into image (name,img ) values (?,?)");
try
{
ps.setString(1, "image");
ps.setBinaryStream(2, istreamImage, (int) monImage.length());
ps.executeUpdate();
}
finally
{
if(rset!=null) rset.close();
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
ps.close();
}
}
finally
{
istreamImage.close();
}
}
////////////////////////////////////////////////////////
public void chargeIMG(String name, String location) throws Exception
{ OracleDataSource ods = null;
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
// Create DataSource and connect to the local database
ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@//localhost:1521/orcl");
ods.setUser("SCOTT");
ods.setPassword("TIGER");
conn = ods.getConnection();
File monImage = new File(location);
FileOutputStream ostreamImage = new FileOutputStream(monImage);
try
{
PreparedStatement ps = conn.prepareStatement("select img from image where name=?");
try
{
ps.setString(1,name);
ResultSet rs = ps.executeQuery();
try
{
if(rs.next())
{
InputStream istreamImage = rs.getBinaryStream("img");
byte[] buffer = new byte[1024*10];
int length = 0;
while((length = istreamImage.read(buffer)) != -1)
{
ostreamImage.write(buffer, 0, length);
}
}
}
finally
{
rs.close();
}
}
finally
{
ps.close();
}
}
finally
{ ostreamImage.flush();
ostreamImage.close();
if(rset!=null) rset.close();
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
}
}
l'appelle de ces deux methodes :
Insert insert = new Insert();
insert.sauveIMG("C:\\Users\\hp\\Desktop\\EMPID1.BMP", "EMPID1.BMP");
insert.chargeIMG("image.bmp", "C:\\Users\\hp\\Desktop\\image.bmp");
merci pour votre aide
Partager